The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

GCC 15 будет использовать стандарт C23 по умолчанию

23.11.2024 21:20

В кодовую базу, на основе которой формируется запланированный на весну следующего года выпуск набора компиляторов GCC 15, принято изменение, включающее по умолчанию использование стандарта С23 с расширениями GNU ("-std=gnu23") при компиляции программ на языке C (ранее по умолчанию использовался стандарт C17 - "-std=gnu17"). Изменение потенциально может привести к проблемам при сборке существующих проектов, так как в новом стандарте имеются отличия, такие как добавление константы nullptr, типа _BitInt(n) и ключевых слов bool, true и false, которые могут конфликтовать с заданными в приложениях одноимёнными идентификаторами.

Стандарт С23 (ISO/IEC 9899:2024) был официально опубликован международной организацией по стандартизации (ISO) 31 октября 2024 года. Среди изменений в новом стандарте:

  • Удалена возможность определения функций в стиле K&R C, используемом до принятия спецификации ANSI C и описанном в книге "The C Programming Language" Кернигана и Ритчи. Стиль K&R подразумевает описание типов аргументов после определения функции, например, "int add(a, b) int a, b; {}"
  • Неименованные параметры функций - необязательность указания имён неиспользуемых параметров при определении функций (как в C++). Например, теперь можно писать "int f(int, int) { return 7; }".
  • Поддержка синтаксиса "[[имя]]" для определения атрибутов как в С++ ("[[gnu::const]]", "[[deprecated]]", "[[fallthrough]]", "[[maybe_unused]]", "[[nodiscard]]", "[[noreturn]]", "[[reproducible]]", "[[unsequenced]]"). Например, атрибут [[noreturn]] позволяет указать, что функция не возвращает выполнение через выражение "return" или достижение конца функции, как это происходит в функциях abort(), longjmp() и exit(). Заголовочный файл stdnoreturn.h и спецификатор "_Noreturn" объявлены устаревшими.
  • Поддержка синтаксиса u8'' для определения констант с символами в UTF-8.
  • Добавлен тип char8_t для строк и символов в кодировке UTF-8, а также функции для преобразования строк с многобайтовыми символами mbrtoc8() и c8rtomb().
  • Изменено действие ключевого слова "auto", которое теперь приводит к выводу типа при определении объектов, что позволяет использовать признак "auto" вместо типа для определения типа переменных на основе типа выражения для их инициализации. Например: "auto y = cos(x);".
  • Функции с пустым списком аргументов теперь обрабатываются как функции, не принимающие аргументы.
  • Добавлена поддержка заголовочных файлов <stdckdint.h> и <stdbit.h> с макросами, функциями и типами для проверки целочисленных вычислений.
  • Разрешено размещение меток перехода в любых местах внутри составных выражений.
  • Прекращена поддержка в коде триграфов, последовательностей из трёх ASCII-символов, обрабатываемых как один символ, например, последовательность "??=" можно было использовать вместо "#". После появления Unicode поддержка триграфов потеряла смысл.
  • Добавлена поддержка префиксов "0b" и "0B" для указания целых значений в двоичной форме, например, "int b = 0b101010".
  • Добавлены ключевые слова bool, static_assert, alignas, alignof и thread_local.
  • Разрешено указание пустых скобок "{}" для инициализации в нулевые значения, т.е. теперь можно писать "struct S { int x, y } s = {};".
  • Предоставлена возможность указания любых универсальных имён символов в символьных и строковых литералах. Например, "int \u0024 = 0;".
  • В "stddef.h" добавлен макрос "unreachable".
  • Добавлен новый тип nullptr_t и константа nullptr для определения нулевых указателей, которые могут конвертироваться в любой тип указателей и представлять вариант NULL, не привязанный к целочисленным типам и типу void*. Например, можно указывать "void func(nullptr_t); func(0); func((void *)0);".
  • Добавлены типы "_BitInt (N)" и "unsigned _BitInt (N))" для определения целых чисел с указанным числом битов, а так же десятичные типы с плавающей запятой "_Decimal32", "_Decimal64" и "_Decimal128" и функции для работы с подобными типами.
  • Добавлена возможность использования символа "'" для наглядного разделения разрядов в числах (например, "1'000'000").
  • Структуры, объединения и перечисления разрешено определять более одного раза в одной области видимости с одним и тем же содержимым и повторяющимся тегом.
  • В стандарт включены операторы typeof и typeof_unqual,
  • Появилась поддержка использования спецификатора constexpr для определения объектов.
  • В заголовочные файлы float.h и math.h добавлены макросы INFINITY, NAN, FLT_NORM_MAX, DBL_NORM_MAX и LDBL_NORM_MAX.
  • Добавлены директивы препроцессора #elifdef, #elifndef, #warning и #embed. "#embed" предназначен для интеграции бинарных ресурсов.
  • Упрощено использование списков с переменным числом аргументов (variadic).
  • Расширены возможности перечислений (enum).
  • Добавлена поддержка подстановки "%b" для обработки двоичных значений в семействах функций printf() и scanf().
  • Вызов функции realloc() с нулевым размером переведён в разряд неопределённого поведения.
  • Стандартизированы функции memccpy(), strdup(), strndup(), gmtime_r() и localtime_r().
  • Объявлены устаревшими функции asctime() и ctime().
  • В разряд ключевых слов переведены макросы static_assert и thread_local.

Дополнение: В утилите sudo выявлены проблемы со сборкой в режиме C23, связанные с использованием функций с пустым списком аргументов, поддержка которых прекращена в стандарте C23. Решающие проблему изменения предложены в выпуске 1.9.16p2. Похожие проблемы со сборкой в GCC 15 из-за функций с пустыми аргументами всплыли в rsync, JSON processor и gpm. В e2fsprogs проблемы со сборкой возникли из-за определения собственного типа "bool".

  1. Главная ссылка к новости (https://www.phoronix.com/news/...)
  2. OpenNews: Релиз набора компиляторов GCC 14
  3. OpenNews: Релиз набора компиляторов GCC 13
  4. OpenNews: Опубликован набор компиляторов LLVM 19
Лицензия: CC BY 3.0
Наводку на новость прислал Аноним
Короткая ссылка: https://opennet.ru/62278-gcc
Ключевые слова: gcc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (327) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, ДаНуНафиг (?), 21:46, 23/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +36 +/
    Ну надо же, bool/true/false подвезли! Я дожил до этого момента!
     
     
  • 2.8, Аноним (8), 22:32, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • +13 +/
    А те, кому реально это было нужно — не ждали и использовали <stdbool.h>, начиная с C99…
     
     
  • 3.68, Анон28679234 (?), 02:39, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +14 +/
    Вообще довольно странно рассуждать о примитивных типах как о "реально нужных" или ненужных
    При определенной степени ментальных упражнений можно даже ассемблер называть синтаксическим сахаром для электроцепи, однако я не вижу очереди желающих написать себе сайт с помощью паяльника
     
     
  • 4.132, Аноним (132), 10:17, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Поверьте налепив сверху на ассемблер макросов можно с легкостью слабать любой сайт ))
     
     
  • 5.174, Аноним (174), 13:55, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    зачем это декаденство? любой сайт можно с легкостью спаять
     
  • 5.184, Аноним (184), 15:06, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ассемблер это и есть набор макросов над набором инструкций процессора.
    А вот если бы кто-то придумал способ превращать более абстрактные, высокоуровневые конструкции в ассемблер для любого набора инструкций...
     
     
  • 6.185, Аноним (132), 15:08, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    LLVM ?
     
  • 6.249, Аноним (249), 09:27, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так это делают компиляторы с языков ВУ.
     
  • 5.327, Аноним (-), 14:55, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Поверьте налепив сверху на ассемблер макросов можно с легкостью слабать любой сайт ))

    На сях микросервис может как на go быть, если правильную либу взять. Т.е. полстранички текста. Скажем см https://lwan.ws - hello world менее чем полстраницы может быть. И это на сях. После чего он еще и в топе любого тематичного бенча отвиснет.

    А покажете на асме такое? :)

     
  • 2.72, Аноним (-), 03:35, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >  Ну надо же, bool/true/false подвезли! Я дожил до этого момента!

    Это еще что! Как тебе такое Элон Маск?!
    > Появилась поддержка использования спецификатора constexpr для определения объектов.

    А вот тут...
    >  Добавлена поддержка префиксов "0b" и "0B" для указания целых значений в двоичной форме

    ...всем микроконтроллерщикам радоваться полчаса!

     
     
  • 3.121, Аноним (121), 09:32, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    "Хочу смеяться пять минут!" ©
     
     
  • 4.201, ryoken (ok), 16:29, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ...пересмотреть что ли...
     
  • 3.146, Тот_Самый_Анонимус_ (?), 11:46, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Ну, кстати, 0b, 0B и %b были вполне логичны изначально. А вот true и false излишни. Меня радовало их отсутствие после мерзского паскаля.
     
     
  • 4.147, нах. (?), 11:49, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    не, ну как только в процессорах появятся "true" и "false", а не jz, так сразу пусть и приходят.

    А пока да - совершенно вредоносная фигня, скрывающая суть операций. Тем более в языке с автоматическим приведением типов.

     
     
  • 5.186, Аноним (-), 15:22, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > не, ну как только в процессорах появятся "true" и "false", а не
    > jz, так сразу пусть и приходят.
    > А пока да - совершенно вредоносная фигня, скрывающая суть операций. Тем более
    > в языке с автоматическим приведением типов.

    Наличие или отсутствие "jz" в конкретном процессоре - вообще не гарантировано. А если ты хотел на ассемблере шпрехать - вот на нем и шпрехай. Прибитый к 1 архитектуре сишка нафиг не упал.

     
     
  • 6.197, нах. (?), 16:15, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Наличие или отсутствие "jz" в конкретном процессоре - вообще не гарантировано.

    лолшта? Процессор без условного перехода - еще не изобрели. А когда изобретут, в нем вряд ли будут работать процедурные языки вообще.

     
     
  • 7.206, Аноним (-), 16:39, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >> Наличие или отсутствие "jz" в конкретном процессоре - вообще не гарантировано.
    > лолшта? Процессор без условного перехода - еще не изобрели.

    Как именно реализованы у конкретного проца условные переходы и какие там условия - это implementation defined и это как раз то от чего мы в си хотим абстрагироваться. Не хотели - юзали бы макроассемблеры, мля.

    > А когда изобретут, в нем вряд ли будут работать процедурные языки вообще.

    Ну какие-то условные операнды конечно быть должны, но так для понимания на тебе SUBLEQ. Такой вот набор команд. Не совсем jz, да? Конечно это мастеркласс брейнфаку как надо было но это тюринг полный набор команд :)

     
     
  • 8.236, нах. (?), 18:50, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    но проца с истиными true false ты конечно же не покажешь Проца без jz полагаю т... большой текст свёрнут, показать
     
     
  • 9.244, Аноним (244), 21:07, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А я думал ты шутишь так В процессорах нет типов, там и nullptr нет и enum, мног... текст свёрнут, показать
     
     
  • 10.252, нах. (?), 10:15, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Он у меня вообще непригоден для условных переходов, его только сравнить с другим... большой текст свёрнут, показать
     
     
  • 11.296, Аноним (244), 18:17, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В процессорах есть типы, среди которых nullptr_t, ну и ну А стандарт говорит о ... текст свёрнут, показать
     
     
  • 12.298, Аноним (-), 18:41, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    У cortex-M в каком-то роде есть - попытка дереференснуть адрес 0 в этом проце да... текст свёрнут, показать
     
  • 12.354, Аноним (354), 18:38, 28/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Фиг с ними, с условными переходами Сколько бит занимает true или false 8 или м... текст свёрнут, показать
     
     
  • 13.357, Аноним (357), 19:03, 28/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Легко См например ARM - и какой нибудь BFI Bit Field Insert Хоть бит, хоть б... текст свёрнут, показать
     
  • 12.367, Аноним (367), 18:50, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И с этого начинается самое первое знакомство с процессором байт, слово, двойное... текст свёрнут, показать
     
     
  • 13.369, arisu (ok), 05:01, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    а ещё вот так можно, например pushd 0x80000000 movss xmm0, esp add esp, 4 ой,... текст свёрнут, показать
     
  • 11.355, arisu (ok), 18:44, 28/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    то есть, на твоих процессорах отсутствует реализация IEEE 754 хреново, бро ... текст свёрнут, показать
     
  • 9.266, Совершенно другой аноним (?), 12:32, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    RISC V Там совмещённые команды BEQ BNE BLT BGE, см https habr com ru articl... текст свёрнут, показать
     
  • 9.297, Аноним (-), 18:34, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    На минуточку вся цифровая логика это 1 и 0, true и false И что такое 5 если я... большой текст свёрнут, показать
     
     
  • 10.356, arisu (ok), 18:49, 28/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    эвона как отстутствие нормального булевого типа 8212 это антиграбли ну поду... текст свёрнут, показать
     
     
  • 11.358, Аноним (357), 19:06, 28/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Думаю что статический анализатор это таки отловит Это все прекрасно - кроме тог... текст свёрнут, показать
     
     
  • 12.360, arisu (ok), 19:20, 28/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    антиграбли, которые надо усердно ловить дополнительной тулзовиной отличные анти... большой текст свёрнут, показать
     
     
  • 13.370, Аноним (370), 05:23, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да, у комитета полудурков есть привычка - сделать 90 фичи и затем почему-то фее... большой текст свёрнут, показать
     
     
  • 14.371, arisu (ok), 05:38, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    а я и пишу как раз на своих, гыг есть у меня глупая привычка после заявления, ... большой текст свёрнут, показать
     
     
  • 15.379, Аноним (-), 09:27, 04/12/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну мы по осени и посчитаем - у кого какие списки проектов будут Со своей сторон... большой текст свёрнут, показать
     
     
  • 16.381, arisu (ok), 10:01, 04/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ты до сих пор вот этим вот меряешься O_O ну, тогда я могу свой дурацкий критери... большой текст свёрнут, показать
     
  • 4.181, Аноним (181), 14:52, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Ну, кстати, 0b, 0B и %b были вполне логичны изначально.

    ЧСХ я ими и пользовался уже лет 10. Просто как GNU Extension. Все равно вон та фирмварь чем-то кроме GCC - не соберется. Ибо в стандартном си даже положить объект в конкретную секцию нельзя.

    > А вот true и false излишни. Меня радовало их отсутствие после мерзского паскаля.

    Особенно радовадо в каком-нибудь



    uint8_t var = 0xFF + 1;
    ...
    if (var)
    else // А мы точно собирались - сюда?!



     
  • 3.167, Аноним (167), 13:15, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Микроконтроллерщики уже на C++
     
     
  • 4.187, Аноним (-), 15:24, 24/11/2024 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
     
  • 5.250, Аноним (249), 09:35, 25/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.237, Аноним (237), 18:51, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Добавлена поддержка префиксов "0b" и "0B" для указания целых значений в двоичной форме

    Пятьдесят джва года ждал!
    Как в DOS в своё время не хватало, всякие железки в порты тыкать.

     
     
  • 4.257, нах. (?), 11:47, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> Добавлена поддержка префиксов "0b" и "0B" для указания целых значений в двоичной форме
    > Пятьдесят джва года ждал!
    > Как в DOS в своё время не хватало, всякие железки в порты
    > тыкать.

    так и запишем - восьмеричная система счисления тебе не далась.

    (а начинал бы не с доса а с нормальных систем на нормальных компьютерах - знал бы, что двоичная форма нахрен не нужна)


     
     
  • 5.262, Аноним (237), 12:14, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так и запишем — ты совершенно не понял, о чём речь.
     
  • 5.264, Аноним (264), 12:19, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В DOS и x86 была принята шестнадцатеричная.
     
  • 5.301, Аноним (-), 18:51, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну попробуй программировать битовые поля в хардварных регистрах в восьмеричной с... большой текст свёрнут, показать
     
  • 2.315, ffsdmad (ok), 08:15, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    вы так дождетесь и вам ещё True-1 и True-2 подвезут
     

     ....большая нить свёрнута, показать (45)

  • 1.2, Аноним (2), 21:58, 23/11/2024 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     

     ....ответы скрыты (7)

  • 1.6, Аноним (6), 22:25, 23/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Структуры, объединения и перечисления разрешено определять более одного раза в одной области видимости с одним и тем же содержимым и повторяющимся тегом.

    а это зачем?

     
     
  • 2.9, bircoph (ok), 22:35, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Чтоб меньше конфликтов было при всяких #include и inline.
     
     
  • 3.17, Аноним (6), 23:23, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • –5 +/
    > Чтоб меньше конфликтов было при всяких #include и inline.

    И как 50 лет жили без этого.

     
     
  • 4.32, Аноним (32), 00:14, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +8 +/
    С матами и постоянными переименованиями всего и вся лишь бы этот комп-депилятор перестал жаловаться, а уже начал комп-депилировать.
     
     
  • 5.166, Аноним (166), 13:14, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Главное, чтобы потом не запутаться в синонимичности.
     
  • 5.168, Аноним (166), 13:18, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Остается вопрос - а когда определена сущность.
     
  • 4.95, Аноним (-), 06:55, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Чтоб меньше конфликтов было при всяких #include и inline.
    > И как 50 лет жили без этого.

    Ну, как, как, городили костыли типа
    #ifndef HAVE_WTF_H
    #define HAVE_WTF_H
    ...(основная тушка)...
    #endif

     
     
  • 5.126, Аноним (6), 09:44, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Теперь не будут?
     
     
  • 6.134, Аноним (132), 10:22, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +5 +/
    теперь будут городить современные модные костыли
     

  • 1.7, Аноним (7), 22:30, 23/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +10 +/
    > Вызов функции realloc() с нулевым размером переведён в разряд неопределённого поведения.

    Нужно больше неопределённого поведения! Потом, когда вылезут очередные уязвимости из-за работы с памятью, можно будет с уверенностью утверждать, что где-то ещё оптимизатор смог ускорить работу на 0.01% благодаря этому!

     
     
  • 2.11, Аноним (11), 22:41, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Ничего удивительного, в этом языке даже int + int является неопределенным поведением. Нам в 2024 ясно видна дикость этого, а вот палео-кодерам из палео-70-ых это казалось нормальной идеей.
     
     
  • 3.28, Аноним (31), 00:06, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > int + int является неопределенным поведением

    Воо, это вообще лютая дичь, я до сих пор не понимаю, КАК такое возможно в языке для системного программирования.

     
     
  • 4.29, Аноним (31), 00:08, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    П.с. а еще больше недоумеваю от тех УМВРщиков, которые в упор это не замечают.
     
     
  • 5.33, Аноним (32), 00:16, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Потому что системный язык должен полагаться на то как происходит сложение на аппаратном уровне в конкретной системе, а не воротить абстракцию над абстракцией лишь бы все было везде одинаково. Кому надо одинаково идут на джаваскрипт зачем им Си?
     
     
  • 6.44, Аноним (-), 00:41, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Потому что системный язык должен полагаться на то как происходит сложение на
    > аппаратном уровне в конкретной системе, а не воротить абстракцию над абстракцией
    > лишь бы все было везде одинаково. Кому надо одинаково идут на
    > джаваскрипт зачем им Си?

    Вон то на практике вело к дохреналиону багов, увы и ах. А абстракции что, как вон то алго не считай, а если ему надо не менее 32 битов для корректной работы - то хоть ты тресни, но ты или дашь эти 32 бита, или профачишь вычисления. В ряде случаев еще и с вулнами, отрицательными индексами массивов и прочими характерными факапами. И спасибо еще если это дамп памяти по сети или в эфир улетит. А то бывает и такое, heartbleed соврать не даст.

     
     
  • 7.48, mister_0 (?), 00:47, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +6 +/
    int a + int b <= int max

    из этого условия можно вывести weakest predicate и проверить его до сложения

    int max - int a => int b

    если это условие не работает, то складывать не надо, будет страшный оверфлоу.

    один if и тот сделать не могут, подавай им сразу новый язык, бороу чекер, безразмерную арифметику и прочее.

     
     
  • 8.55, Аноним (55), 01:11, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Да, но 1 Это лишняя операция 2 Половина долбоклюев это забудет 3 На прак... текст свёрнут, показать
     
     
  • 9.62, mister_0 (?), 01:58, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    у тебя есть процессор и три регистра по 32 бита ты загрузил в один регистр A 0x1... текст свёрнут, показать
     
     
  • 10.96, Аноним (-), 07:16, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Меня для начала колышет в системщине - делать доступы конкретного размера А не ... большой текст свёрнут, показать
     
     
  • 11.246, anon2 (?), 23:05, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    26 ... текст свёрнут, показать
     
     
  • 12.328, Аноним (328), 15:05, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вот, блин да, 25 битов - в каждом из операндов, а в вон том есть 25-й бит, но би... текст свёрнут, показать
     
  • 10.145, Аноним (166), 11:45, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Есть регистр флагов, где валидность результата уже видна и не надо городить ваши... текст свёрнут, показать
     
  • 10.258, нах. (?), 11:49, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ну проверка битика вообще-то почти халявная Хз почему в низкоуровневом языке ее... текст свёрнут, показать
     
  • 8.56, Аноним (-), 01:16, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Если значение int a отрицательное, будет переполнение при вычитание underflow... текст свёрнут, показать
     
     
  • 9.59, mister_0 (?), 01:33, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    несомненно для отрицательных чисел нужно использовать min int, а ещё конечно не ... текст свёрнут, показать
     
     
  • 10.64, Аноним (64), 02:17, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вместо дорогой пред-проверки с явными сравнениями и несколькими ветками можно бы... текст свёрнут, показать
     
     
  • 11.171, mister_0 (?), 13:26, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ага ну конечно, это в каких так сделано точно не в дебаг компиляции онли Бранч... текст свёрнут, показать
     
  • 10.73, Аноним (73), 04:04, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Сначала проверь, что оба положительные, потом вычти одно из max int, сравни со в... текст свёрнут, показать
     
     
  • 11.189, Аноним (189), 15:39, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И во сколько раз у нас накроется скорость всей математики таким манером Не хоти... большой текст свёрнут, показать
     
  • 10.118, Bottle (?), 09:20, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    и теперь ты нагородил кучу проверок на пустом месте, которые ещё надо писать ... текст свёрнут, показать
     
     
  • 11.212, Аноним (212), 16:56, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Что еще хуже - при запиле руками, в лоб , тот же int a int b INT_MAX это к... текст свёрнут, показать
     
     
  • 12.218, Аноним (212), 17:07, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ЧСХ, если b негативное число, то тут правильно, UB ... текст свёрнут, показать
     
  • 10.149, Аноним (166), 11:52, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    стандартный вопрос - какому числу равен min int ... текст свёрнут, показать
     
     
  • 11.190, Аноним (189), 15:40, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще в макросне указано - чему он равен в конкретной системе Как и максимальн... текст свёрнут, показать
     
  • 9.79, Neon (??), 05:38, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А простое сложение расползается кучей кода с кучей багов Спасибо, не надо... текст свёрнут, показать
     
  • 8.91, Аноним (91), 06:22, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    если a -10, то при int max - int a будет оверфлоу ... текст свёрнут, показать
     
  • 8.122, Аноним (122), 09:33, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Когда мне нужно было решить задачу проверки на переполнение, я использовал intpr... текст свёрнут, показать
     
  • 8.128, Аноним (32), 09:55, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем тебе тогда си если ты собрался это проверять на каждом сложении Чтобы поб... текст свёрнут, показать
     
  • 8.170, Аноним (166), 13:22, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Если вам нужен язык для вычислительной математике - берите фортран и не пудрите ... текст свёрнут, показать
     
  • 7.105, 21yosenior (?), 08:41, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На практике ничего иного не наблюдается. Языки с иными свойствами почему-то миру ничего дать не смогли. Поэтому там может быть хоть в 10 раз больше багов - это никак не влияет на оценку.
     
     
  • 8.125, Bottle (?), 09:43, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Практика не показатель качества - выживают не самые сильные и умные, а самые ада... текст свёрнут, показать
     
     
  • 9.130, Аноним (32), 09:57, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Тебе навешали лапши про какие то вульны и ты теперь истеришь не по делу ... текст свёрнут, показать
     
  • 9.131, 21yosenior (?), 10:10, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Показатель Воровские лозунги ничего не стоят и не значат Да и в целом рассказы... текст свёрнут, показать
     
  • 7.176, Аноним (166), 14:30, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >ты или дашь эти 32 бита, или профачишь вычисления.

    Для вычислений используйте Фортран.

     
  • 6.46, Аноним (-), 00:45, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Потому что системный язык должен полагаться на то как происходит сложение
    > на аппаратном уровне в конкретной системе

    Угу, именно поэтому они это не implementation-defined, не хотя бы unspecified, а вот сразу UB!
    Что бы когда ты писал код, то как он будет работать было именно ХЗ, в зависимости от платформы, железа, флагов, степени безумия разраба компилятора, которые может просто выкинуть твой код нафиг с обоснование "не, ну не бывает же UB в нормальном коде".

     
     
  • 7.54, анон (?), 01:10, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Такова плата за генерацию эффективного кода. Никто же не заставляет использовать именно Си
     
     
  • 8.69, Аноним (-), 02:50, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так ведь всё с точностью до наоборот В Си надо обложить код if ами чтобы не пол... текст свёрнут, показать
     
  • 8.74, Bottle (?), 04:10, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    О дааа Тот самый эффективный код на Си, известный своими утечками памяти А то,... текст свёрнут, показать
     
     
  • 9.152, Аноним (166), 12:23, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Уже давно есть типы фиксированной ширины и контроль переполнения Задирание шири... текст свёрнут, показать
     
     
  • 10.293, Bottle (?), 17:27, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Всё это хорошо, ровно до тех пор, когда ты начинаешь писать код И вдруг оказыва... текст свёрнут, показать
     
  • 8.80, Neon (??), 05:39, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это называется халтура На от бись ... текст свёрнут, показать
     
  • 8.106, 21yosenior (?), 08:44, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Если бы не заставляли Все слёзы и ненависть обусловлена тем, что никаких иных я... текст свёрнут, показать
     
  • 7.120, Аноним (73), 09:31, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Аноним написал много латинских слов, и думает, что написал что-то умное.

    А на самом деле, implementation-defined, unspecified и undefined, это буквально одно и то же. Что конкретно скрывается за UB, должно быть задокументировано в документации к компилятору.

     
     
  • 8.143, Аноним (-), 11:33, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если для вас то это прекрасно объясняет причины текущего состояния айтишечки П... текст свёрнут, показать
     
  • 8.251, Аноним (251), 09:37, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да ладно Если тебе эти латинские слова непонятны, засунь их в переводчик, и п... текст свёрнут, показать
     
  • 6.47, Аноним (-), 00:46, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну давай, расскажи мне как ты собрался из Си "полагаться на то как происходит сложение на аппаратном уровне" если переполнение int'ов есть undefined behavior а не implementation-defined behavior.
     
  • 6.78, Neon (??), 05:35, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Пусть на ассемблере кодят, раз им нужно сложение на аппаратном уровне в конкретной системе. Язык высокого уровня уже по любому абстракция
     
  • 6.90, morphe (?), 06:13, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вот только всё современное железо реализует это как two s complement, и сложение... большой текст свёрнут, показать
     
     
  • 7.111, Аноним (244), 08:54, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А в сях стандарт написан так, что сложение может происходить на абаках

    Ты просто не умеешь этим гордиться, а они умеют.

     
  • 5.104, 21yosenior (?), 08:39, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Просто они знают, что ub является переполнение, а не сложение. Поэтому у них всё работает.
     
  • 4.254, Аноним (254), 10:51, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > КАК такое возможно в языке для системного программирования

    Вы видимо не системный программист, раз задаётесь таким простейшим вопросом.

     
  • 3.42, mister_0 (?), 00:37, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ну так ты проверь перед сложением или можешь после сложения в регистр flags посмотреть, там есть бит переполнения.

    а ещё есть люди которые рапэраунд с оверфлоу путают

     
     
  • 4.49, Аноним (49), 00:48, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > или можешь после сложения в регистр flags посмотреть

    в С?

     
     
  • 5.50, mister_0 (?), 00:53, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ну придётся ассемблерную вставку сделать.
     
     
  • 6.53, Аноним (-), 01:04, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > ну придётся ассемблерную вставку сделать.

    А ничего что на сях мы писали - чтобы портабельно было, м?!

     
     
  • 7.123, Аноним (73), 09:36, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вы писали на сях, чтобы было быстро, а не чтобы было портабельно.

    Оптимальное соотношение между скоростью разработки и скоростью работы программы.

     
     
  • 8.191, Аноним (191), 15:45, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Мы писали на сях - чтобы было и быстро и портабельно, ага И именно поэтому ... текст свёрнут, показать
     
  • 7.172, Аноним (166), 13:29, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Для портабельно используйте Java. Си это быстрота и гибкость.
     
     
  • 8.192, Аноним (191), 15:46, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Для непортабельного у нас уже был ассемблер, но пример Colibri OS почему-то наме... текст свёрнут, показать
     
  • 6.81, Neon (??), 05:40, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А на хрена тогда С нужен ? Если нужно сразу на ассемблере фигачить
     
  • 5.51, mister_0 (?), 00:55, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    но я выше ответил, что проще считать post condition выводить weakest predicate и проверять его до вызова и никаких тебе оверфлоу.

    или ты думаешь, что только использования раста и питона это единственный способ?

     
     
  • 6.65, Аноним (64), 02:19, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > или ты думаешь, что только использования раста и питона это единственный способ?

    Скажем так, единственный способ - это не использование С.

     
     
  • 7.108, 21yosenior (?), 08:48, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Пистон написан на си, поэтому там ситуация таже самая. Раст компилируется си компилятором, поэтому ситуация снова такая же. Хоть паскалик бы в пример привёл - не настолько позорно было бы.
     
     
  • 8.137, Аноним (-), 10:45, 24/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 9.139, 21yosenior (?), 10:59, 24/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 10.179, Аноним (-), 14:40, 24/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 8.144, Аноним (-), 11:38, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это не соответствует действительности Фронт раста компилируется внезапно компил... текст свёрнут, показать
     
     
  • 9.150, 21yosenior (?), 12:01, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Соответствует, просто ты ангажированный агитатор, спамящий агитки написано на ... текст свёрнут, показать
     
  • 5.107, 21yosenior (?), 08:45, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В си. __builtin_*_overflow() - 1000 лет есть.
     
     
  • 6.119, 21yosenior (?), 09:21, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет, похоже всё ещё хуже - там в новости написано "Добавлена поддержка заголовочных файлов <stdckdint.h>". Это даже в стандарте теперь есть, но почему-то эксперты говорят "в си нет способа".
     
     
  • 7.188, Аноним (-), 15:31, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Какие милые костили))
    И даже это стандартизировали только через _пол-века_ после создания самого языка.
    А зачем следование параметров поменяли?
     
     
  • 8.194, 21yosenior (?), 15:59, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Очередное умножение агитатора на ноль Сначала он рассказывал, что нет способов ... текст свёрнут, показать
     
  • 4.52, Аноним (-), 01:04, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > ну так ты проверь перед сложением или можешь после сложения в регистр
    > flags посмотреть, там есть бит переполнения.

    В сях нет стандартного способа посмотерть флаги, внезапно.

    > а ещё есть люди которые рапэраунд с оверфлоу путают

    Wrapround определен и гарантирован только для unsigned, если что.

     
     
  • 5.82, Neon (??), 05:41, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > В сях нет стандартного способа посмотерть флаги, внезапно.

    Такой системный язык))). Близкий к аппаратуре

     
     
  • 6.97, Аноним (-), 07:28, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> В сях нет стандартного способа посмотерть флаги, внезапно.
    > Такой системный язык))). Близкий к аппаратуре

    Внезапно он еще и про портабельность. А имплементация флагов у разных процов - довольно разная бывает. Так что - ограничения жанра, скажем так.

    В парадигмах C вообще возможны как таковые только mem-mapped доступы. Если нечто не отмаплено в память - ну, этого нет. На память об этом вся современная периферия как раз mem mapped, а всякие io пространства - легаси. Заодно mem mapped железки и DMA удобны, чего уж там. Самый лучший код - это его отсутствие!

     
     
  • 7.124, Аноним (244), 09:40, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну, у C есть ещё стандартизированные расширения из ISO IEC TR 18037 Среди кото... большой текст свёрнут, показать
     
     
  • 8.195, Аноним (195), 16:06, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вот такой вот хреновый стандарт, со звездочкой и 5-м шрифтом 1 из многочис... большой текст свёрнут, показать
     
     
  • 9.233, Аноним (244), 18:33, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну блин, это была не реклама AVR, а история про то, что если не отмаплено, то в ... текст свёрнут, показать
     
     
  • 10.303, Аноним (-), 20:32, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А таки вон те кейворды 1 Нестандартны от слова вообще 2 Здорово нагибают п... большой текст свёрнут, показать
     
     
  • 11.317, Аноним (244), 09:08, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Но всё-таки есть стандарт на добавление подобных кейвордов Наоборот, они изба... большой текст свёрнут, показать
     
     
  • 12.329, Аноним (-), 16:09, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Но называя вещи своими именами - это не сработало Де факто - подобный код не по... большой текст свёрнут, показать
     
     
  • 13.340, Аноним (244), 23:17, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    С одной стороны, там поднимать почти нечего и в даташите почти всё есть С друго... текст свёрнут, показать
     
     
  • 14.341, Аноним (-), 00:29, 27/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Почти не считается Даже просто самому определить регистры AVR ки - брейнфак Иб... большой текст свёрнут, показать
     
  • 8.268, фф (?), 13:23, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    вот кстати, сюда же можно было бы замапить регистры процессора и проверять бит п... текст свёрнут, показать
     
  • 5.112, 21yosenior (?), 08:55, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > В сях нет стандартного способа посмотерть флаги, внезапно.

    Не позорься - написал выше этот способ.

    > Wrapround определен и гарантирован только для unsigned, если что.

    Опять же, нужно меньше позориться. ++*(unsigned*)&int_var - переполняй сколько хочешь.

     
     
  • 6.148, Аноним (-), 11:52, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > переполняй сколько хочешь.

    Поздравляю.
    Своим костылем с кастом к unsigned вы только подтверждаете что проблему UB, что убогость сишки в целом.
    Продолжайте в том же духе))

     
  • 6.196, Аноним (195), 16:13, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тебе там уже написали что ты облажался А, ты за добавкой пришел Ну я тебе ее о... большой текст свёрнут, показать
     
  • 3.103, 21yosenior (?), 08:38, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Судя по всему решение хорошее. Как иначе объяснить, что весь софт написан на этой дикости, а на чём-то ином не аписано ничего.
     
     
  • 4.222, Аноним (-), 17:22, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Весь нормальный софт написан на плюсах.
    Даже самый сишный компилятор гцц и тот не осилили на сишке продолжать.

    А на сишке или легаси нуано, или упертый Айм Финнишь, который просто не хочет признать свою ошибку.

    А до с++ была ада. Но быдлокоделам было легче писать на си.

     
  • 2.175, Аноним (166), 14:27, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Если по факту UB, то и объявить надо, что - UB.
     

     ....большая нить свёрнута, показать (90)

  • 1.12, Аноним (12), 22:46, 23/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Значит ли это, что gcc 15 будет поддерживать стандарт c23 ПОЛНОСТЬЮ?
     
  • 1.15, Маковод (?), 23:02, 23/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +9 +/
    Всё это ерунда, есть же православный ANSI C (C89). Всё остальное — ненужный реверс инжиниринг с синтаксическим сахаром.
     
     
  • 2.16, Маковод (?), 23:03, 23/11/2024 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Овер инжиниринг* (будь проклята автозамена)
     
     
  • 3.34, Аноним (32), 00:19, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Сахар это язык zig. Си это та ложка дегтя.
     
  • 2.41, Аноним (-), 00:34, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Всё это ерунда, есть же православный ANSI C (C89). Всё остальное —
    > ненужный реверс инжиниринг с синтаксическим сахаром.

    Вот ты на нем и прогай. А я меньше чем на C99 в принципе не согласен, а лучше минимум 11, ибо делать из г-на и палок аналог static assert'а - ну такое себе.

     
  • 2.277, Аноним (277), 15:06, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Будь мужиком, не останавливайся на C89! Используй триграфы!
     

  • 1.18, nc (ok), 23:26, 23/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Расширения GNU давно пора принимать в стандарты С и С++. Простые и полезные идеи, уже давно реализованные и многократно проверенные.
    Единственное чего не хватает - расширения __declspec(property) в С++, которое есть в msvc и clang, но нет в gcc.
     
     
  • 2.135, Аноним (244), 10:29, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, C практически заморожен И не один GCC имеет власть - не захотят остальные ... большой текст свёрнут, показать
     
     
  • 3.198, Аноним (-), 16:23, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Де факто актуальные компилеры C это GCC и Clang Майкрософт хотя-бы C99 уже смог... большой текст свёрнут, показать
     
     
  • 4.220, Аноним (244), 17:15, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так ты 2 2 написал, а сложить не сложил Я сложу из C99 выкинули VLA, C99 стал ... большой текст свёрнут, показать
     
     
  • 5.223, Аноним (244), 17:28, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > потому что от языка требуется некоторая прямая совместимость

    То есть требуется не только чтобы старый код работал в новых компиляторах (обратная совместимость). но и хорошее взаимодействие между старым и новым кодом. То есть старый код тянет назад будущие версии языка. Это как если бы в JS не стали добавлять "use strict", потому что он диалект создаёт. Проблему даже сложно осознать, но в C++ она есть.

     
  • 5.307, Аноним (-), 21:22, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    У них, помнится, далеко не только VLA не хватало, по жизни Народ заманался ждат... большой текст свёрнут, показать
     
     
  • 6.318, Аноним (244), 11:08, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, вас MISRA и то, и другое запретила, а вы вольнодумствуете о разумных реакц... большой текст свёрнут, показать
     
     
  • 7.323, Аноним (244), 12:32, 26/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 7.324, fuggy (ok), 14:03, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да кто же эту MISRA будет использовать. Если это не критическая программа, то никто это использовать не будет. А если критическая, то они использует это и без MISRA и всё равно ошибки допускают. Вот если бы это было встроено в компиляторы на уровне варнингов. А так как нужно для оптимизации иногда ходить по тонкой грани UB они от этого плюются.
     
  • 7.330, Аноним (-), 17:05, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще-то и правильно сделала в своей области, если уж мы об этом И на микрокон... большой текст свёрнут, показать
     

     ....большая нить свёрнута, показать (9)

  • 1.38, Аноним (-), 00:23, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    llvm не лучше? обоснуйте
     
     
  • 2.115, 21yosenior (?), 09:04, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Хуже.
    '''
    int f(int* p, int a) { p = __builtin_assume_aligned(p, a); }
    '''
     

  • 1.40, Аноним (-), 00:31, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > атрибут [[noreturn]] позволяет указать, что функция не возвращает значений

    Вообще-то он указывает что функция никогда не возвращается. Скажем main в фирмвари - возвращаться некуда и его можно задекларить так (экономит немного кода в прологе функции).

     
     
  • 2.263, Аноним (237), 12:18, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Тоже глаз зацепился. Думаю: что, void отменили, что ли?
     
     
  • 3.308, Аноним (-), 21:23, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Тоже глаз зацепился. Думаю: что, void отменили, что ли?

    Да это автор новости прогнал, увы и ах, но такое тоже бывает.

     

  • 1.58, Аноним (58), 01:20, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    14 версия при сборке пакетов ругалась на указатели, 15 будет ругаться если код не той версии. Страшно представить на что 16 версия ругаться будет.
     
     
  • 2.281, _kp (ok), 16:07, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Если не указываете явно с каким стандартом Си компилировать исходник, то не все ли равно. :)
     

  • 1.70, мяв (?), 02:59, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    что-то фигня какая-то с auto..
    auto myNum = superCalculator(2,2);
    и иди гадай, кого там возвращает твоя функция.
    а потом твой друг пойдет гадать и лазать в соседнем файле, когда откроет код .. псоле чего окажется, что эту фцнкцию где-то там по дороге перекрыли/перепилили/вовсе другой файл включили и она тперь возвращает int, вместо uint :|
    зачем вообще такое добавлять в язык со сторой типизацией?
    ну, серьезно, это ж лол какой-то.
    послезавтра эта функция будет char* возвращать. и я, вместо жалобы на неправельный тип в декларации, увижу 100500 жалоб в черт пойми, каких частях кода.
    а auto молча станет char*.
     
     
  • 2.71, мяв (?), 03:00, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    я ж правильно логику работы auto поняла?
     
  • 2.84, Neon (??), 05:43, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Какие проблемы ? Смотрим объявление функции. В современных IDE это автоматом подсвечивается при наведении на функцию
     
     
  • 3.161, Аноним (166), 12:49, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А без IDE и AI уже никуда?
     
     
  • 4.288, nilsys (?), 16:59, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ну вы можете хоть на бумажках писать, но большинство людей ориентируются на использование подходящих для работы инструментов
     
  • 2.86, Илья (??), 05:48, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Значит, типизация не строгая. Должно сломаться всё по цепочке.

    А то, что ты тип возвращаемого значения меняешь в публичном апи - это отдельный вопрос

     
     
  • 3.163, Аноним (166), 12:57, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну неявно это можно понимать как тип "возвращенный функцией". Освобождает от знания интерфейса функции, но оставляет вопросы сопряжения с другими типами. В си никогда не было строгой типизации. Была идея "адаптивной типизации".
     
     
  • 4.351, Илья (??), 05:58, 28/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не понял. Что такое адаптивная типизация?
     
  • 2.99, Аноним (-), 07:45, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да вот блин да, научились у некоторых - а конкретно плюсеров Но порой таки - уд... большой текст свёрнут, показать
     
     
  • 3.331, arisu (ok), 17:26, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Си вообще забавная штука. Вроде низкоуровневый, но функция на самом деле может
    > и получить и вернуть даже struct.

    причём для передачи структуры по значению ABI требует, чтобы все её поля бережно засунули в стек по одному. нет, не просто блоб-структуру, которую можно потом нормально адресовать, а поля один за одним, как будто это обычные параметры соответствующего типа. мне даже не хочется представлять, чем закидывался тот, кто это придумал.

     
     
  • 4.342, Аноним (-), 00:43, 27/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Сам по себе стандарт C не регламентирует никакие ABI А для ARM так и вовсе 2 AB... большой текст свёрнут, показать
     
     
  • 5.343, arisu (ok), 01:21, 27/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    успехов писать на 171 стандарте си 187 как удобно когда надо 8212 down ... большой текст свёрнут, показать
     
     
  • 6.361, Аноним (-), 19:26, 28/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще, вот именно программы под Linux - вполне себе могут быть conforms to И... большой текст свёрнут, показать
     
     
  • 7.363, arisu (ok), 20:24, 28/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    правда, они даже ввод и вывод делать не могут 8212 потому что в языке си нет ... большой текст свёрнут, показать
     
     
  • 8.372, Аноним (-), 06:06, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А stdio h это что, мой глюк Тот же printf можно и на мк завести Он в полной ... большой текст свёрнут, показать
     
     
  • 9.374, arisu (ok), 06:25, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ух ты, это у нас теперь часть языка эвона как как это ты же выше сам сказал, ... большой текст свёрнут, показать
     
     
  • 10.380, Аноним (380), 10:00, 04/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Прикинь, часть стандарта на ЯП code STANDARDS fprintf , printf , spr... большой текст свёрнут, показать
     
     
  • 11.382, arisu (ok), 10:13, 04/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ты мне сейчас серьёзно цитируешь маны как authoritative source по стандартам no... большой текст свёрнут, показать
     
  • 2.113, Бывалый Смузихлёб (ok), 08:57, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Зато, как славно показали себя иные адепты строгой и явной типизации и отсутствия такого у того же ЖС вот то ли дело сишечка
    Стоило лишь в некоторые ЯП подвезти auto. Наворачивали за обе щёки и обмазывали вообще всё до чего могли дотянуться, а не использовали ранее - тупо потому что такой возможности не было
     
  • 2.162, ProfessorNavigator (ok), 12:51, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    В С++ auto есть уже достаточно давно, и да, может вызывать проблемы. В том числе с читаемостью кода. Но есть у него и плюсы. Когда у вас std::find_if возвращает например итератор вида std::vector<std::tuple<MyClassOne, MyClassTwo, std::shared_ptr<MyClassThree>>>::iterator, то проще написать auto it = std::find_if(...). В данном случае и так сразу видно, итератор чего вернётся, и понятно - каким он будет. Поэтому auto вполне уместно - от него читаемость кода только повысится. Но злоупотреблять им естественно не стоит. Иначе, как вы правильно заметили, потом просто запутаетесь, какая функция что возвращает, и будете ловить проблемы на ровном месте.
     
  • 2.235, Аноним (166), 18:45, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не позволяйте автомату (компилятору) определять ваш код за вас.
    Кроме того есть версии библиотек.
     
  • 2.242, Вы забыли заполнить поле Name (?), 19:47, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > зачем вообще такое добавлять в язык со сторой типизацией?

    Это называется автовывод. Советую посмотреть на ML.

     
     
  • 3.253, nobody12 (?), 10:31, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Увы, если для С++ это имеет смысл, чтобы не писать типы из 100500 шаблонов (привет Boost), то для обычного С это действительно вредительство
     
     
  • 4.269, Аноним (244), 14:19, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > чтобы не писать типы из 100500 шаблонов

    А в сях 100500 макросов.

    > то для обычного С это действительно вредительство

    Ядро линукса, поиск гитхаба, ищем где используют кривые аналоги auto.

    typeof(x) - 55 файлов.
    __typeof__(x) - 13 файлов.
    __auto_type - 9 файлов.
    typeof(var) ... = ... var - до 1000 файлов (backreference в поиске не работает)

    Начни с главного вредителя, Торвальдса.

     
     
  • 5.309, Аноним (-), 21:25, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Ядро линукса, поиск гитхаба, ищем где используют кривые аналоги auto.
    > typeof(x) - 55 файлов.
    > __typeof__(x) - 13 файлов.
    > __auto_type - 9 файлов.
    > typeof(var) ... = ... var - до 1000 файлов (backreference в поиске
    > не работает)

    typeof(var) это мягко говоря не синоним auto и может использоваться чертовой кучей иных способов.

    > Начни с главного вредителя, Торвальдса.

    Да, начните. Сделайте свой проект, дайте этому негодяю мастеркласс. Что, слабо? А сколько пафосу было...

     
     
  • 6.316, Аноним (244), 08:15, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> typeof(var) ... = ... var - до 1000 файлов
    > typeof(var) это мягко говоря не синоним auto и может использоваться чертовой кучей
    > иных способов.

    А буквой t ещё древние римляне пользовались. Я ведь полную конструкцию привёл, не надо её обрезать.

    > Да, начните. Сделайте свой проект, дайте этому негодяю мастеркласс.

    - ананасы в пицце (вывод типов в C) - это вредительство
    - пиццерия на букву G давным-давно добавила, а в неё ходит коллектив L
    - займитесь ими!
    - ???

    Это вы здесь вредительство искали. Или уже вредительство уже не вредительство, когда оказалось, что его Линус одобрил?

     

     ....большая нить свёрнута, показать (25)

  • 1.77, Аноним (77), 05:35, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Зачем снова новый тип char8_t, если уже есть char и unsigned char. Более того есть еще stdint.h где есть int8_t и uint8_t. Почему?
     
     
  • 2.85, Neon (??), 05:44, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Почему "Ы" ???  Чтоб никто не догадался!)
     
  • 2.140, Аноним (-), 11:24, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Почему? А потому что диды-недостандартописаки смогли подоcpaть даже в такой простой вещий как char.

    Вот ответь на простой вопрос - обычный char будет знаковым или беззнаковым?

    А вот хз, как повезет. Для gcc он по умолчанию signed, но если использовать флаг -funsigned-char, то будет unsigned. Но опять же не везде - для Android NDK он по умолчанию unsigned и если что нужно юзать -fsigned-char.
    А для MSVC он по умолчанию signed, но флаг нужно использовать другой.

    При этом char8_t определен однозначно:
    "char8_t is an unsigned integer type used for UTF-8 and is the same type as unsigned char."

    en.cppreference.com/w/c/string/multibyte/char8_t

     
     
  • 3.155, Аноним (166), 12:29, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Диды писали для себя и не думали о глобализации. Еще они дали местным инженерам адаптировать для своей аппаратной платформы.
     
     
  • 4.217, Аноним (-), 17:03, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Японцы с тобой несогласны вся Азия приветствует Юникод.
     
  • 2.154, Аноним (166), 12:27, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что стандартом символа стал уникод. Кроме того это унификация под типы фиксированной ширины.
     
     
  • 3.182, Truth Seeker (?), 14:54, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Давайте проведем эксперимент в Debian

    vi test.c

    #include <stdio.h>

    int main(int argc, const char *argv[])
    {
    printf("%s\n", argv[1]);

    return 0;
    }

    make test

    ./test Привет!

    Привет!

    Вопрос: Что я делаю не так ?

     
     
  • 4.199, Аноним (-), 16:28, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > make test
    > ./test Привет!
    > Привет!
    > Вопрос: Что я делаю не так ?

    Ну, для начала - не проверяешь что argv[1] вообще был, хотя-бы :). Так что если это запустить без аргументов... :)

     
     
  • 5.208, Truth Seeker (?), 16:48, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не проверяю для краткости. Вопрос не об этом. "Привет!" - это UTF-8 строка, а в main char** .
     
     
  • 6.284, _kp (ok), 16:14, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >>UTF-8 строка, а в main char

    Так Вы со строкой ничего и не делаете, а выводите что дали. Длина и то, по завершающему нулю.
    А вот если, например, посимвольно будете выводить, или посчитать длину..

     
     
  • 7.373, Аноним (-), 06:17, 30/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Так Вы со строкой ничего и не делаете, а выводите что дали.
    > Длина и то, по завершающему нулю.
    > А вот если, например, посимвольно будете выводить, или посчитать длину..

    А вы вообще знаете как правильно считать посимвольно какие-нибудь иероглифы, всякие там модификаторы, RTL/LTR и тому подобные приколы? Unicode в этом смысле - тот еще брейнфак получился. А вот смайликов не хотели? А еще и цветных, а?!

     
  • 5.216, Truth Seeker (?), 17:00, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ./test Привет! > hello.txt
    hexdump -C hello.txt

    00000000  d0 9f d1 80 d0 b8 d0 b2  d0 b5 d1 82 21 0a        |............!.|

     
     
  • 6.229, Аноним (166), 18:12, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Про это и говорю. Вы прозрачно работаете с char не подозревая о его ширине. Когда-то она была равна 8 битам.
     
     
  • 7.255, Аноним (6), 11:14, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это не прозрачно. Printf %s просто выводит байты и эмулятор терминала пытается их интерпретировать (по случайному совпадению он настроен на utf-8). Если ты попробуешь работать с текстом посимвольно, быстро осознаешь, что тут не так. При этом wchar обычно для utf-16, но там тоже не каждые 16 бит что-то означают. Одно из заметных следствий из этого состоит в том, что файловое имя в 64 символа не поместится в 255 байтное ограничение для имён файлов. И нельзя навскидку сказать, сколько символов можно будет записать -- это может быть и 64 и 255 и сколько угодно между этими значениями.
     
  • 5.271, Аноним (271), 14:36, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Так что если это запустить без аргументов... :)

    Думаю, Вы привели неудачный аргумент. Всегда нужно знать, какие аргументы передать в функцию, и какие функция ожидает. Можно, конечно, в функции сделать обработку неправильных аргументов или вообще пустых, но это дополнительно утяжеляет функцию.
    Помнится, была (может, и сейчас есть) великобританская библиотека что-то типа Applied Statistics. Там каждая функция стандартно анализировала все эти вещи, включая неправильные значения переданных параметров. Считаю это излишним. Очистку и контроль данных лучше делать до вызова алгоритма их обработки, не увеличивая объем кода в 2-3 раза.

     
     
  • 6.310, Аноним (-), 21:27, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> Так что если это запустить без аргументов... :)
    > Думаю, Вы привели неудачный аргумент. Всегда нужно знать, какие аргументы передать в
    > функцию, и какие функция ожидает.

    В данном случае достаточно запустить прогу без аргументов и она радостно брякнется, референснув argv[1] которого там даже в проекте нет :)

     
  • 4.259, Аноним (259), 11:51, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот сразу видно счастливого человека!
    Ни разу не е*ался с длинами символов и кодировками)
     
     
  • 5.265, Аноним (237), 12:19, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А потом начинается диакретика. А потом какие-нибудь арабские языки… и идёшь вешаться.
     
     
  • 6.280, Аноним (-), 16:05, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Цитата из Википедии.

    >Стандарт Юникод поддерживает письменности языков как с направлением написания слева направо (англ. left-to-right, LTR), так и с написанием справа налево (англ. right-to-left, RTL) — например, арабское и еврейское письмо. В обоих случаях символы хранятся в «естественном» порядке; их отображение с учётом нужного направления письма обеспечивается приложением.

    Блин это так сложно (сарказм). Иди вешайся, лично я пас.

     
  • 5.273, Аноним (271), 14:43, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ни разу не е*ался с длинами символов и кодировками)

    Ага, особенно для языков с написанием справа налево и с иероглифическим письмом.
    Поэтому маленький пример приведу. В естественно-научных дисциплинах 99% мировых публикаций выходит на английском языке. По крайней мере в этой области есть ли смысл вообще переводить ПО на локальные языки? Для себя решил, что ради 1% тратить кучу времени на локализацию и интернационализацию в ущерб смысловой начинке проекта - нет. В новом проекте избавляемся от переводов и кодировок в принципе - там нет ни одной буквы на не-латинице.

     
     
  • 6.282, Аноним (-), 16:09, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >По крайней мере в этой области есть ли смысл вообще переводить ПО на локальные языки?

    Внутри пещеры. смысла нет.

    >Для себя решил, что ради 1% ...

    Рад за тебя. Хоть что-то сам решаешь.

    >В новом проекте избавляемся от переводов и кодировок в принципе - там нет ни одной буквы на не-латинице

    Не понял логический смысл этого предложения.

     
  • 6.286, Аноним (-), 16:21, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > В естественно-научных дисциплинах 99% мировых публикаций выходит на английском языке.
    > В новом проекте избавляемся от переводов и кодировок в принципе - там нет ни одной буквы на не-латинице.

    А потом твой пользователь пытается сохранить файл с путем или именем и... приложение падает?
    Думаю это плохой опыт для пользователя)

    Я уже молчу что япония, корея, израиль - это весьма развитые страны страны отличной научной базой.
    И китай, кстати, тоже.


     

  • 1.87, Аноним (87), 05:50, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    > Удалена возможность определения функций в стиле K&R C, используемом до принятия спецификации ANSI C и описанном в книге "The C Programming Language" Кернигана и Ритчи.

    Так это уже не тот язык С, который придумали его изобретатели Брайан Керниган и Деннис Ритчи. Это совсем совсем другой язык "С23" и т.д. и т.п. А значит, можно использовать старый стандарт 89 года, с оговоркой, что это настоящий язык С.

     
     
  • 2.136, Аноним (244), 10:42, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > старый стандарт 89 года

    Так это тоже "уже не тот язык С" - в K&R C не было UB (поэтому переиздание книжки K&R устарело примерно в момент выхода).

     
     
  • 3.178, Truth Seeker (?), 14:38, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это не важно.
     
     
  • 4.200, Аноним (244), 16:29, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не важно что Пропасть между K R C и C89 важна Переносимый ассемблер поднялся... большой текст свёрнут, показать
     
     
  • 5.209, Truth Seeker (?), 16:50, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Пропасть между K&R C и C89 важна.

    По сравнению с тем, что K&R и С23 это разные миры.

     
     
  • 6.227, Аноним (244), 17:48, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Тогда выходит, что и C89 & С23 - разные миры. Это такая же ерунда, как про Кернигана, Ритчи и "их" C89.

    Парадигма языка менялась только в C89. C23 добавляет memset_explicit, не потому что он такой весь новый, а чтобы решить проблему, созданную в C89.

     
  • 5.221, Truth Seeker (?), 17:21, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В 1988 году я ещё играл в "Лунолёт" на МК-61 и таких подробностей про С89 не знал. Я говорю "условно", чтобы принять ранний стандарт за эталон, так как он реализован в GCC. Оставлю опции компилятору. Но буду за этим следить тоже.
     
     
  • 6.300, Аноним (-), 18:45, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >В 1988 году я ещё играл в "Лунолёт" на МК-61 и таких подробностей про С89 не знал.

    В 1988 у нас кроме чёрно-белого телевизора ничего не было. На цветной телевизор денег не хватало. Ты видимо сынок богатого зажравшегося политработника.

     
     
  • 7.319, Аноним (264), 12:19, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да ладно вам, MK-61 и МК-52 рядовым студентам покупали обычные родители.
     
     
  • 8.320, Аноним (-), 12:21, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    52 стоил рублей 100 Это не так уж мало А 61, кажется был еще дороже ... текст свёрнут, показать
     
     
  • 9.325, Аноним (264), 14:09, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    MK-52 навороченнее У него были разъёмы для подключения модулей расширения Поэт... текст свёрнут, показать
     
     
  • 10.332, Аноним (-), 17:31, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Говоришь так, как будто было изобилие Дефицит был Эти МК-52 только в обласных ... текст свёрнут, показать
     
     
  • 11.368, Anonymmm (?), 23:40, 29/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    У меня на МК-61 написано 85 рублей Без проблем покупался даже студентами чуть ... текст свёрнут, показать
     
  • 3.346, Соль земли (?), 09:50, 27/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    int no_args() дайте две.
     
  • 2.238, Аноним (166), 18:52, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Опции GCC, управляющие диалектом языка.
    https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html
     
  • 2.294, Bottle (?), 17:31, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Я тебе скажу, о! ужас!, суровую правду жизни: ты и на русском языке говоришь не эпохи Рюрика, а на языке Пушкина, Толстого, Достоевского.
    Да, Сишка не может кристализироваться и быть идеальной. Ей нужно развитие.
     

  • 1.88, Аноним (87), 05:53, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Оригинальный язык С описан в книге "The C Programming Language" Кернигана и Ритчи. Все остальное я могу с полным правом игнорировать. Отныне все мои проекты будут базироваться исключительно на книге "The C Programming Language".
     
     
  • 2.157, Аноним (166), 12:34, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Главное держитесь подальше от учеников.
     
     
  • 3.224, Truth Seeker (?), 17:33, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Грамматику языка С я реализую по этой книге. Что не будет сюда подходить, то отнесу на счет дополнительных правил. Можно сказать, что это будет новая ветка развития С, с того момента.
     
  • 2.173, Аноним (167), 13:40, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И обязательно в самом оригинальном vi !  
     
     
  • 3.177, Truth Seeker (?), 14:36, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я использую vim - подсветка синтаксиса, авто-дополнение, многооконность в консоли, форматирование, замена и поиск regex, вставка результатов команды. Например, я могу вставить в текст прямо из сайта, не выходя из vim.
     
     
  • 4.267, Аноним (264), 12:34, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Но это уже не TrueЪ. Надо пользоваться тем, что был во времена K&R.
     
  • 2.215, Аноним (-), 16:59, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Скажи почему ты такой немодный? Модные и молодёжные будут использовать C23!
     

  • 1.89, Аноним (87), 06:01, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > указания имён неиспользуемых параметров при определении функций (как в C++)
    > определения атрибутов как в С++

    Также языком С++ лично я считаю язык представленный в книге The C++ Programming Language (1st edition). Все остальное - это выдумки, и я могу их с полным правом игнорировать.

     
     
  • 2.117, Аноним (-), 09:17, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Требую больше постов о том, как ты игнорируешь. Я большой любитель поведения людей, которое можно описать словами "я такая противоречивая сегодня".
     
  • 2.240, Аноним (166), 18:57, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это какой-то патентный троллинг.
     

  • 1.92, ijuij (?), 06:35, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Удалена возможность определения функций в стиле K&R C

    Это меня огорчает, у меня есть ещё код в подобном стиле!

     
     
  • 2.93, ijuij (?), 06:46, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А так мне все нововведения нравятся, и особенно хочу отметить это:

    > Добавлены типы "_BitInt (N)" и "unsigned _BitInt (N))" для определения целых чисел с указанным числом битов

    🔝

     
     
  • 3.101, Аноним (101), 07:47, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Мммм. Как же мне не хватало переменных длиной 3, 7, 11 бит
     
     
  • 4.202, Аноним (-), 16:31, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Мммм. Как же мне не хватало переменных длиной 3, 7, 11 бит

    Вообще иногда удобно. Если мне нужен диапазон 0..7 и при этом алго корректно работает, отдельно кодить валидацию и что вообще делать если на вход дали 20 ибо даже с uint8_t так можно было - сами понимаете.

    Хотя конечно если очень сильно хотелось - можно было битовыми полями в struct это организовать, но у struct'ов есть свои скелеты в шкафу. Главный из которых - если мы полтора параметра хотели, разворачивать огород с typedef struct было несколько не с руки.

     
  • 3.109, Аноним (109), 08:53, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это ж какой простор для UB!
    Ну и вообще, полностью идёт вразрез с идеей сишки. Всякие char/int реализуются аппаратно by design, а это-то как?
     
     
  • 4.114, ijuij (?), 09:00, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > а это-то как?

    Там внедрено много кода, взгляни на коммиты в GCC:
    https://github.com/search?q=repo%3Agcc-mirror%2Fgcc+%22_BitInt&

     
  • 4.142, Советский инженер (ok), 11:29, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну и вообще, полностью идёт вразрез с идеей сишки.

    т.е. когда поле структуры 3,7,11 бит - это не идет в разрез,
    а вот когда это отдельная переменная - то уже идет?

    так по твоему?

     
     
  • 5.158, Аноним (166), 12:41, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Есть масочная операция над регистром и есть ячейка памяти.
     
     
  • 6.160, Аноним (244), 12:48, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Но это не ответ на вопрос о bitfield'ах.
     
     
  • 7.239, Аноним (244), 18:53, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > вопрос о

    Так, я не антисемит, если что.

    (вчера) C++ Standards Contributor Expelled For 'The Undefined Behavior Question' https://slashdot.org/submission/17330375/c-standards-contributor-expelled-for-

     
     
  • 8.248, Аноним (248), 08:48, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    О, теперь слово Question оказывается нельзя применять Когда уже запретят пить... текст свёрнут, показать
     
  • 6.204, Аноним (-), 16:34, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Есть масочная операция над регистром и есть ячейка памяти.

    А в чем проблема чтобы расширить битовые поля чтобы они не были только в struct? Ну или почему как member struct'а так можно - а по отдельности ни ни?

    Вы же понимаете что когда мы хотели это - мы таки заводили struct? Просто печатать было больше. И только.

     
     
  • 7.230, Аноним (166), 18:21, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    struct это сущность
    Битовое поле это дополнительная операция над сущностью.
    Биты не хранятся.
     
     
  • 8.241, Аноним (-), 19:45, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так можно сказать что и байты не хранятся, потому что компиляторы выравнивают ра... текст свёрнут, показать
     
  • 8.287, _kp (ok), 16:25, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Смотря на каких аппаратных архитектурах Где то и косвенно адресуемые биты есть ... текст свёрнут, показать
     
  • 8.311, Аноним (-), 21:32, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И тут стоит сказать что таки да - вон то вызывает чаще всего не особо эффективны... текст свёрнут, показать
     
  • 2.159, Аноним (166), 12:44, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это изначально было неудобно и было вкусовщиной.
     

  • 1.153, Аноним (153), 12:26, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Успехов GCC конечно, но лучше я буду использовать odin-lang и даже zig-lang уже сейчас.
     
     
  • 2.304, Аноним (304), 20:33, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А я буду использовать GCC, потому что он есть везде - от Windows до Haiku.
     
     
  • 3.306, Аноним (153), 21:13, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да ты и сбр*шь. Зачем писать под всё подряд, только распылять свои силы.
     
     
  • 4.321, Аноним (264), 12:25, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну если под Windows понимать Msys2, то там отличий от юзерспейса под Linux немного. Рзве что, только в отношении API сокетов.
     

  • 1.156, Аноним (156), 12:30, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ... которое теперь приводит к выводу типа при определении объектов, что позволяет использовать признак "auto" вместо типа для определения типа переменных на основе типа выражения для их инициализации

    типа всё понятно

     
  • 1.164, Аноним (-), 13:04, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    На С++23 я уже видел проекты, а кто-нибудь видел проект на С23?
     
     
  • 2.183, ijuij (?), 14:56, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пожалуйста, наберитесь терпения! Скоро всё увидите, даже не сомневайтесь! 🌟

     
  • 2.205, Аноним (-), 16:35, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > На С++23 я уже видел проекты, а кто-нибудь видел проект на С23?

    Учитывая что он финализировался без году неделю как? Coming soon! :D

    Я вот уже думаю - не заапгрейдить ли мне тут 1 из болванок для моих фирмварей на это :)

     
     
  • 3.214, Аноним (-), 16:58, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Учитывая что он финализировался без году неделю как? Coming soon! :D

    Да. Например https://github.com/stephenberry/glaze.

    > Requires C++23

     
     
  • 4.362, Аноним (-), 19:45, 28/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> Учитывая что он финализировался без году неделю как? Coming soon! :D
    > Да. Например https://github.com/stephenberry/glaze.
    >> Requires C++23

    Так мы ж вроде про C23 - которы буквально на днях финализировался только. Так что на самом деле он так то C24 скорее, и тот под конец года :). При чем тут та плюсота?

    А так жесткие требования к компилеру от либы - вовсе даже и не фича, а гемора пачка.

     

  • 1.207, Аноним (-), 16:46, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >GCC 15 будет использовать стандарт C23 по умолчанию

    Это ещё одно доказательство того, что GCC самый передовой в Мире компилятор.

     
  • 1.226, Аноним (-), 17:44, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Добавлена поддержка подстановки "%b" для обработки двоичных значений в семействах функций printf() и scanf().

    Раньше чтобы десятичное число вывести в двоичном виде как делали?

     
     
  • 2.234, Аноним (166), 18:39, 24/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Самостоятельно формировали строку в буфере и выводили через спецификатор %s.
     
     
  • 3.289, _kp (ok), 17:06, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Часто это уже добавлено в компиляторах для контроллеров. Ничего нового, просто зафиксировали.
    В том числе gcc, ибо для этого компилятор пересобирать не надо, а всего то мелкая правка в libc.
     

  • 1.232, Аноним (166), 18:30, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А есть где нибудь статистика используемых ассемблерных инструкций тем или иным компилятором?
     
  • 1.243, Аноним (304), 20:53, 24/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Стиль K&R подразумевает описание типов аргументов после определения функции, например, "int add(a, b) int a, b; {}"

    Что это было?

     
     
  • 2.247, fuggy (ok), 01:52, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Функции с пустым списком аргументов теперь обрабатываются как функции, не принимающие аргументы.

    Вона ещё было. Тоже с каких-то древних годов тащили.

     
     
  • 3.256, Аноним (6), 11:42, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    в плюсах можно писать main() и в си только main(void) -- насколько это хорошая идея судить не возьмусь, но тащить плюсы в си тема не здоровая.
     
     
  • 4.260, Аноним (237), 12:12, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Подобные вещи к плюсам вообще отношения не имеют, как раз их назад тащить есть смысл.
     
     
  • 5.261, Аноним (237), 12:13, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    К плюсам именно как к языку, имею в виду.
     
  • 4.270, Аноним (271), 14:29, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > тащить плюсы в си тема не здоровая

    Почему нет? Пишу алгоритмы (бэкэнды) фактически на C с использованием удобных, как мне кажется, возможностей C++ (управление памятью и файловый/потоковый ввод-вывод). Конечно, все это без проблем обрабатывается компилятором g++ как C++.
    Код, и без того сложный, получается лаконичным и легко сопровождаемым. А почти все, что предлагается выше, делает код эстетически некрасивым, даже неприятным. И толку от этого ноль.

     
     
  • 5.276, Аноним (6), 15:01, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это глупость. Либо пишешь на си, чтобы не иметь недостатков плюсов, либо на плюсах, если они позволяют генерировать более эффективный код в конкретном случае. При включении плюсов любой код становится заражённым плюсами. Тут и ресурсоёмкость, и раскрутка стека/исключений, и рантаймы, часто утечки на ровном месте и найти их куда сложнее чем в си, и, опять же, стандарт перегружен и нужно его понимать -- легче ошибиться. Наконец, нет ABI (до сих пор) и это прямо боль, так что применения ограничены.
     
     
  • 6.292, Аноним (264), 17:20, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И что вам это ABI так жить мешает? Ну перекомпилируете ваш код, если что. Есть же libffi, если к другим языкам надо. И к тому же, большое изменение ABI, помнится, было последний раз при переходе с g++ v3.3 на v3.4.
     
     
  • 7.295, Аноним (6), 17:37, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В реальном коде будут бинарные компоненты, да и в целом пересобирать все зависимости при каждом обновлении тулчейна не очень приятно. И часто не вариант, потому что сборка обновлённым компилятором очень часто сломана (отличный пример интеловские либы, в том числе опенсорсные). Ну вот взять wxwidgets -- все проги после смены компилятора разлетаются во все стороны. Такое вот ABI. Или вон взять osl (https://github.com/AcademySoftwareFoundation/OpenShadingLanguage) -- требует держать старый тулчейн для себя и всех как либо связанных компонентов годами. И openimageio туда же. Это всё опенсорс (каждый раз приходится пересобирать по десятку связанных пакетов), с проприетарными компонентами всё слишком печально.
     
  • 7.334, arisu (ok), 17:37, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > И что вам это ABI так жить мешает? Ну перекомпилируете ваш код,
    > если что.

    угу. всё бросил и побежал перекомпилировать, как только бравые парни в g++ что-то сломали. ну, я ж программы и библиотеки пишу не для того, чтобы решать практические задачи, а чтобы писать программы и библиотеки.

    по какой-то странной причине (недосмотр, надеюсь, его скоро исправят) код на си перекомпилировать не надо. с нетерпением жду отмены этой устаревшей концепции.

     
  • 5.285, Аноним (-), 16:17, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это плохая практика. Большинство людей от этого давно отошли. Пиши либо на чистом Си, либо на плюсах, не смешивай код.
     
  • 5.312, Аноним (153), 01:42, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Всё же ты пишешь на с++, возможно, иногда делая вставки на си.
     
     
  • 6.314, Аноним (271), 06:41, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Возможно, и так. Но если нужна DLL, наружу всё-равно выглядывает C.
     
  • 4.291, _kp (ok), 17:11, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > в плюсах можно писать main() и в си только main(void)

    можно и классику - int main[-1];


     

  • 1.272, Аноним (272), 14:38, 25/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Лучше бы использовали С89 по умолчанию.
     
     
  • 2.279, Аноним (-), 15:17, 25/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.302, Аноним (302), 19:25, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Код, соответстующий C89, гораздо красивее, совместимость выше, его все используют и т. д.
     
     
  • 3.322, Аноним (264), 12:31, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Кто все? Даже в ядре уже объявили C11, в Glibc и подавно был C99, как минимум.
     
     
  • 4.326, Аноним (302), 14:27, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ладно, не все, но свои программы я пишу в соответствии со стандартом C89.
     
     
  • 5.336, Аноним (-), 17:50, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Ладно, не все, но свои программы я пишу в соответствии со стандартом C89.

    Да хоть на Algol-60 пиши, кому тут какое дело?

     
  • 2.350, InuYasha (??), 20:57, 27/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Согласен на 98.
     

  • 1.274, Аноним (271), 14:47, 25/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Представим, что каждые 5 лет обновляется учебник родного языка. Причем заменяется процентов 10 слов и процентов 30 правил. В языках программирования возможно. Может, оставят Кернигана-Ритчи в покое и направят усилия в плодотворное русло?
     
     
  • 2.278, Аноним (272), 15:13, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да компиляторы все равно обратную совместимость сохранят, не беспокойся.
     
     
  • 3.335, arisu (ok), 17:41, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ага как gcc13, например, который стал ругаться на snprintf buf, sizeof buf , ... большой текст свёрнут, показать
     
     
  • 4.337, Аноним (-), 17:58, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну ты то известный раздолбай-концептуал, уж прости Это таки случай когда семеро... большой текст свёрнут, показать
     
     
  • 5.338, arisu (ok), 18:11, 26/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    угу и игнорирование явного указания на то, что я понимаю, что делаю 8212 в в... большой текст свёрнут, показать
     
     
  • 6.344, Аноним (-), 03:09, 27/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это как бы уже некий тупняк, но да - роботам слава Я в паре мест плевался на ст... большой текст свёрнут, показать
     
     
  • 7.345, arisu (ok), 08:38, 27/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    8230 который авторы гоцэцэ багом не считают к сожалению, соответствующий тике... большой текст свёрнут, показать
     
     
  • 8.364, Аноним (-), 20:46, 28/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Лично мне довольно пофиг - я в целом вполне могу жить с GCC и мне в общем нормал... большой текст свёрнут, показать
     
     
  • 9.365, arisu (ok), 22:00, 28/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ну, кто-то молча хавает что дали, а кто-то не хочет это всё отлично но соверше... большой текст свёрнут, показать
     
     
  • 10.375, Аноним (-), 18:41, 03/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И из трезвых рациональных предложений лучше чем это, будет, например, что Извин... большой текст свёрнут, показать
     
     
  • 11.376, arisu (ok), 00:02, 04/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    не хавать я вот стараюсь без проблем но поскольку это надо не мне, а тебе 8... большой текст свёрнут, показать
     
  • 2.290, Аноним (264), 17:09, 25/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Допустим, Кернигана и Ритчи оставили в покое. А в какое плодотворное русло направлять усилия, совершенно новые языки пилить? Так эти усилия и так полны плодами.
     
     
  • 3.299, Аноним (-), 18:43, 25/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 4.305, Аноним (153), 21:09, 25/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.352, _ (??), 06:15, 28/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Допустим, Кернигана и Ритчи оставили в покое.

    Похоже таки отпустили на пенсию :)
    > А в какое плодотворное русло направлять усилия, совершенно новые языки пилить? Так эти усилия и так полны плодами.

    Это да :) Но это - другое.

    А для Си - для меня самая большая хотелка - сделайте в нём модули (да хоть как в Go) и уберите нах инклюды ... а может даже и весь препроц! 8-о ... хотя наверное это уже ыкстрмизьмЪ :)

     
     
  • 4.353, arisu (ok), 09:33, 28/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > А для Си - для меня самая большая хотелка - сделайте в
    > нём модули

    это слишком смелая концепция. помилуй, идее модулей всего-то каких-то пол-века. кто ж такой непровереный на практике новодел в серьёзный язык позволит добавить?!

     

     ....большая нить свёрнута, показать (15)

  • 1.339, Я (??), 22:27, 26/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    strdup очень безопасная функция, особенно когда принимает неалоцированную строку, питонисты добились её утверждения в стандартные
     
  • 1.347, Соль земли (?), 09:52, 27/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    35 лет допиливали язык. Вот это я понимаю поддержка!
     
  • 1.348, InuYasha (??), 20:49, 27/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот, реально задалбывает в плюсах: ну ввели вы новую погребень - ДАЙТЕ ЛЮДЯМ ЭТО ПРОВЕРИТЬ!

    > добавление константы nullptr

    #if !defined(nullptr) - хрен вам! сосите лапу.
    #define nullptr (void *)0x0 // условно

    так уже достало писать слой портабельности на все компиляторы с 90ых годов!..

     
  • 1.349, InuYasha (??), 20:55, 27/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > В стандарт включены операторы typeof и typeof_unqual,

    20 лет просил об этой хреноте и всё равно сделали что-то ж...не то что хотелось. А всего-то надо было typeof(a) == typeof(b)...

     
     
  • 2.359, Аноним (-), 19:14, 28/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> В стандарт включены операторы typeof и typeof_unqual,
    > 20 лет просил об этой хреноте и всё равно сделали что-то ж...не то что хотелось. А всего-то надо было typeof(a) == typeof(b)...

    Зато комми-тет может пообсуждать это годика 3 и выпустить новый стандарт!


     

  • 1.383, uis (??), 11:49, 05/12/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >В "stddef.h" добавлен макрос "unreachable".

    Неопределённое поведение, теперь в ваших заголовочках.

     
  • 1.384, pavlinux (ok), 19:44, 10/12/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >  Добавлена поддержка префиксов "0b" и "0B" для указания целых значений в двоичной форме, например, "int b = 0b101010".

    Лет 10 уже так пишу, нипанятна  \/( ' ')\/

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру