The OpenNET Project / Index page

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



"GCC 15 будет использовать стандарт C23 по умолчанию"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

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

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=62278

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "GCC 15 будет использовать стандарт C23 по умолчанию"  +13 +/
Сообщение от ДаНуНафиг (?), 23-Ноя-24, 21:46 
Ну надо же, bool/true/false подвезли! Я дожил до этого момента!
Ответить | Правка | Наверх | Cообщить модератору

8. "GCC 15 будет использовать стандарт C23 по умолчанию"  +4 +/
Сообщение от Аноним (8), 23-Ноя-24, 22:32 
А те, кому реально это было нужно — не ждали и использовали <stdbool.h>, начиная с C99…
Ответить | Правка | Наверх | Cообщить модератору

68. "GCC 15 будет использовать стандарт C23 по умолчанию"  +2 +/
Сообщение от Анон28679234 (?), 24-Ноя-24, 02:39 
Вообще довольно странно рассуждать о примитивных типах как о "реально нужных" или ненужных
При определенной степени ментальных упражнений можно даже ассемблер называть синтаксическим сахаром для электроцепи, однако я не вижу очереди желающих написать себе сайт с помощью паяльника
Ответить | Правка | Наверх | Cообщить модератору

19. "GCC 15 будет использовать стандарт C23 по умолчанию"  –5 +/
Сообщение от YetAnotherOnanym (ok), 23-Ноя-24, 23:27 
Бедненький! Как же ты жил без этой ложечки сахара?
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

23. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (23), 23-Ноя-24, 23:43 
Возможно, до этого момента он не программировал вообще. А теперь пенсия на горизонте, и кто, кроме него, будет охранять пятёрочку на раЁне?
Ответить | Правка | Наверх | Cообщить модератору

75. "GCC 15 будет использовать стандарт C23 по умолчанию"  –1 +/
Сообщение от Илья (??), 24-Ноя-24, 04:37 
Сишников не люблю, они жлобы
Ответить | Правка | Наверх | Cообщить модератору

94. Скрыто модератором  +/
Сообщение от Аноним (-), 24-Ноя-24, 06:53 
Ответить | Правка | Наверх | Cообщить модератору

24. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (24), 23-Ноя-24, 23:44 
> ложечки сахара?

ну вот "синтаксический диабет", уже ампутировали "Удалена возможность определения функций в стиле K&R C,".

Ответить | Правка | К родителю #19 | Наверх | Cообщить модератору

72. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (-), 24-Ноя-24, 03:35 
>  Ну надо же, bool/true/false подвезли! Я дожил до этого момента!

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

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

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

Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

2. Скрыто модератором  +2 +/
Сообщение от Аноним (2), 23-Ноя-24, 21:58 
Ответить | Правка | Наверх | Cообщить модератору

4. Скрыто модератором  +5 +/
Сообщение от Блюститель лицензий (?), 23-Ноя-24, 22:03 
Ответить | Правка | Наверх | Cообщить модератору

5. Скрыто модератором  +4 +/
Сообщение от Маковод (?), 23-Ноя-24, 22:19 
Ответить | Правка | Наверх | Cообщить модератору

22. Скрыто модератором  +/
Сообщение от Аноним (23), 23-Ноя-24, 23:41 
Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

10. Скрыто модератором  –3 +/
Сообщение от Аноним (8), 23-Ноя-24, 22:38 
Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

14. Скрыто модератором  +/
Сообщение от Маковод (?), 23-Ноя-24, 23:00 
Ответить | Правка | Наверх | Cообщить модератору

20. Скрыто модератором  +/
Сообщение от YetAnotherOnanym (ok), 23-Ноя-24, 23:33 
Ответить | Правка | К родителю #10 | Наверх | Cообщить модератору

31. Скрыто модератором  –1 +/
Сообщение от Аноним (23), 24-Ноя-24, 00:11 
Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

6. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (6), 23-Ноя-24, 22:25 
>Структуры, объединения и перечисления разрешено определять более одного раза в одной области видимости с одним и тем же содержимым и повторяющимся тегом.

а это зачем?

Ответить | Правка | Наверх | Cообщить модератору

9. "GCC 15 будет использовать стандарт C23 по умолчанию"  +2 +/
Сообщение от bircoph (ok), 23-Ноя-24, 22:35 
Чтоб меньше конфликтов было при всяких #include и inline.
Ответить | Правка | Наверх | Cообщить модератору

17. "GCC 15 будет использовать стандарт C23 по умолчанию"  –3 +/
Сообщение от Аноним (6), 23-Ноя-24, 23:23 
> Чтоб меньше конфликтов было при всяких #include и inline.

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

Ответить | Правка | Наверх | Cообщить модератору

32. "GCC 15 будет использовать стандарт C23 по умолчанию"  +4 +/
Сообщение от Аноним (32), 24-Ноя-24, 00:14 
С матами и постоянными переименованиями всего и вся лишь бы этот комп-депилятор перестал жаловаться, а уже начал комп-депилировать.
Ответить | Правка | Наверх | Cообщить модератору

67. Скрыто модератором  +/
Сообщение от Аноним (67), 24-Ноя-24, 02:24 
Ответить | Правка | Наверх | Cообщить модератору

39. "GCC 15 будет использовать стандарт C23 по умолчанию"  +3 +/
Сообщение от Аноним (39), 24-Ноя-24, 00:25 
Жили же тысячи лет в пещерах и ничего.
Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

95. Скрыто модератором  +/
Сообщение от Аноним (-), 24-Ноя-24, 06:55 
Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

7. "GCC 15 будет использовать стандарт C23 по умолчанию"  +4 +/
Сообщение от Аноним (7), 23-Ноя-24, 22:30 
> Вызов функции realloc() с нулевым размером переведён в разряд неопределённого поведения.

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

Ответить | Правка | Наверх | Cообщить модератору

11. "GCC 15 будет использовать стандарт C23 по умолчанию"  +6 +/
Сообщение от Аноним (11), 23-Ноя-24, 22:41 
Ничего удивительного, в этом языке даже int + int является неопределенным поведением. Нам в 2024 ясно видна дикость этого, а вот палео-кодерам из палео-70-ых это казалось нормальной идеей.
Ответить | Правка | Наверх | Cообщить модератору

28. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (23), 24-Ноя-24, 00:06 
> int + int является неопределенным поведением

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

Ответить | Правка | Наверх | Cообщить модератору

29. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (23), 24-Ноя-24, 00:08 
П.с. а еще больше недоумеваю от тех УМВРщиков, которые в упор это не замечают.
Ответить | Правка | Наверх | Cообщить модератору

33. "GCC 15 будет использовать стандарт C23 по умолчанию"  +2 +/
Сообщение от Аноним (32), 24-Ноя-24, 00:16 
Потому что системный язык должен полагаться на то как происходит сложение на аппаратном уровне в конкретной системе, а не воротить абстракцию над абстракцией лишь бы все было везде одинаково. Кому надо одинаково идут на джаваскрипт зачем им Си?
Ответить | Правка | Наверх | Cообщить модератору

44. "GCC 15 будет использовать стандарт C23 по умолчанию"  +2 +/
Сообщение от Аноним (-), 24-Ноя-24, 00:41 
> Потому что системный язык должен полагаться на то как происходит сложение на
> аппаратном уровне в конкретной системе, а не воротить абстракцию над абстракцией
> лишь бы все было везде одинаково. Кому надо одинаково идут на
> джаваскрипт зачем им Си?

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

Ответить | Правка | Наверх | Cообщить модератору

48. "GCC 15 будет использовать стандарт C23 по умолчанию"  +2 +/
Сообщение от mister_0 (?), 24-Ноя-24, 00:47 
int a + int b <= int max

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

int max - int a => int b

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

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

Ответить | Правка | Наверх | Cообщить модератору

55. "GCC 15 будет использовать стандарт C23 по умолчанию"  +1 +/
Сообщение от Аноним (55), 24-Ноя-24, 01:11 
> int a + int b <= int max
> из этого условия можно вывести weakest predicate и проверить его до сложения
> int max - int a => int b

Да, но...
1) Это лишняя операция.
2) Половина долбоклюев это забудет.
3) На практике в системном программировании порой нужны доступы конкретного размера, скажем к HW regs.

Ну то-есть железка может в принципе не поддерживать ничего кроме "доступ 32 бита шириной" и мне нафиг не вперся ваш int абстрактный, мне надо - доступ на шине 32 бита щириной.

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

Это не халявно в рантайме и чревато глупыми багами. И выглядит как костыль.

Ответить | Правка | Наверх | Cообщить модератору

62. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от mister_0 (?), 24-Ноя-24, 01:58 
>Это не халявно в рантайме и чревато глупыми багами. И выглядит как костыль.

у тебя есть процессор и три регистра по 32 бита
ты загрузил в один регистр A 0x1000000
ты загрузил в другой регистр B 0x1000000
ты просишь процессор сложить A + B и записать в регистр C

у тебя не хватило бит и это оверфлоу
чтобы не было оверфлоу тебе надо что-то всё равно делать, это никогда не халявно.

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

Ответить | Правка | Наверх | Cообщить модератору

96. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (-), 24-Ноя-24, 07:16 
> у тебя есть процессор и три регистра по 32 бита

Меня для начала колышет в системщине - делать доступы конкретного размера. А не абы какой от фонаря. Потому что часто надо при работе с железом, да и для предсказуемости математики самое то, чтобы как раз получать ГАРАНТИРОВАННЫЕ свойства.

> ты загрузил в один регистр A 0x1000000
> ты загрузил в другой регистр B 0x1000000
> ты просишь процессор сложить A + B и записать в регистр C

За 16-ричную математику этот аноним^W mister_0 получает твердую двойку! Ибо 0x2000000 прекрасно лезет в 32-битный регистр, сумма 25 битов всего.

И если я скажу


uint32_t something()
{
    uint32_t a = 0x1000000;
    uint32_t b = 0x1000000;
    return (a + b);
}

...то вот это как раз - ГАРАНТИРОВАННО сработает, как раз по причине диапазона, и более того компилер даже по этой аннотации проверить может - если вдруг нет. И выдать варнинг, между прочим.

А вот если я int в этом месте напишу - вот это будет залет. Ибо он и 16 битов может быть. При том на обычном компе это все прокатит. Но на каком-нибудь AVR голимом меня в таком коде будет ждать нефиговый сюрприз, если вдруг это не отловится почему-то. Когда вся математика отъедет нахрен. Заметьте, оптимизация вам тут все равно не светит. Если операция требует 25 битов, даже на атмеге компилер развернет 32-бит "этажерку" для этого. Да, это будет медленнее но это лучше чем напрочь некорректный счет в управляющей системе.

И это как раз причина int по возможности вообще не юзать. Хреново он в стандарте определен, и кто из програмеров всерьез уповает что это 16 битов? Большая часть кода подразумевает минимум 32. И конечно вытворяет черти что на авр каком.

Сериализовать int портабельно - это вообще отдельный вопрос. Т.е. IO по сети и с файлами это сразу задник. С uint32_t все сильно проше. Только с порядком байтов "в провод" определиться и - готово, мы знаем что всегда будет 4 байта.

> у тебя не хватило бит и это оверфлоу

Чтобы умничать по теме - в ней надо хоть что-то понимать, чтоли.

> чтобы не было оверфлоу тебе надо что-то всё равно делать, это никогда не халявно.

Или не надо. Как в вон том примере. Де факто там вообще будет нечто типа mov r5, #2000000h - ну или что там можно энному процу закодировать.

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

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

На минуточку, есть еще mem-mapped периферия и проч. И вот оно довольно разборчивое на тему того какие туда доступы можно а какие нельзя. И давать лекции тому кто это все практикует - не рубя в топике - надо конкретно наглости набраться, "на уровне Кента" практически.

Ответить | Правка | Наверх | Cообщить модератору

56. "GCC 15 будет использовать стандарт C23 по умолчанию"  +2 +/
Сообщение от Аноним (-), 24-Ноя-24, 01:16 
> int max - int a => int b

Если значение "int a" отрицательное, будет переполнение при вычитание (underflow), которое тоже есть UB. В целом ваш коментарий показателен, типичный сишник не только не знает Си, но с умным лицом берется рассуждать о других языках.

Ответить | Правка | К родителю #48 | Наверх | Cообщить модератору

59. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от mister_0 (?), 24-Ноя-24, 01:33 
несомненно для отрицательных чисел нужно использовать min int, а ещё конечно не стоит забывать о представлении числа и в дополнительной форме отрицательных больше чем положительных на одно.

но идея вполне понятна, если ты боишься оверфлоу, то можешь вполне всё проверить.

эти проверки можно встроить или генерить автоматом, но они всё равно будут.

хочешь быстро используй специальную инструкцию
https://stackoverflow.com/questions/14523480/assembly-detect...

один чёрт всё равно придётся что-то придумать, что делать, если оверфлоу

Ответить | Правка | Наверх | Cообщить модератору

64. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (64), 24-Ноя-24, 02:17 
> эти проверки можно встроить или генерить автоматом, но они всё равно будут.

Вместо дорогой пред-проверки с явными сравнениями и несколькими ветками можно было бы использовать дешёвую пост-проверку регистра флагов, выражающуюся одним conditional jump'ом, вдобавок очень хорошо обрабатываемым branch predictor'ом. В C это невозможно сделать даже явно, а в современных языках это делается по умолчанию.

Ответить | Правка | Наверх | Cообщить модератору

73. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (73), 24-Ноя-24, 04:04 
Сначала проверь, что оба положительные, потом вычти одно из max int, сравни со вторым, потом уже можешь складывать.

Ответить | Правка | К родителю #59 | Наверх | Cообщить модератору

79. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Neon (??), 24-Ноя-24, 05:38 
А простое сложение расползается кучей кода с кучей багов. Спасибо, не надо
Ответить | Правка | К родителю #56 | Наверх | Cообщить модератору

91. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (91), 24-Ноя-24, 06:22 
если a = -10, то при
int max - int a
будет оверфлоу
> один if и тот сделать не могут, подавай им сразу новый язык, бороу чекер, безразмерную арифметику и прочее.
Ответить | Правка | К родителю #48 | Наверх | Cообщить модератору

46. "GCC 15 будет использовать стандарт C23 по умолчанию"  +1 +/
Сообщение от Аноним (-), 24-Ноя-24, 00:45 
> Потому что системный язык должен полагаться на то как происходит сложение
> на аппаратном уровне в конкретной системе

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

Ответить | Правка | К родителю #33 | Наверх | Cообщить модератору

54. "GCC 15 будет использовать стандарт C23 по умолчанию"  –2 +/
Сообщение от анон (?), 24-Ноя-24, 01:10 
Такова плата за генерацию эффективного кода. Никто же не заставляет использовать именно Си
Ответить | Правка | Наверх | Cообщить модератору

69. Скрыто модератором  +/
Сообщение от Аноним (-), 24-Ноя-24, 02:50 
Ответить | Правка | Наверх | Cообщить модератору

74. "GCC 15 будет использовать стандарт C23 по умолчанию"  +1 +/
Сообщение от Bottle (?), 24-Ноя-24, 04:10 
О дааа! Тот самый эффективный код на Си, известный своими утечками памяти. А то, что указатели не обладают строгостью, как в Фортране, это мы конечно умолчим. И то, что "швитой штандарт" разрешает любым переменным занимать хоть 64 бита, лишь бы преодолевали минимальную границу длины от стандарта. Да, очень эффективное управление памятью для переменных вида int и float. Всего лишь в два-четыре раза больше положенного.
Ответить | Правка | К родителю #54 | Наверх | Cообщить модератору

80. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Neon (??), 24-Ноя-24, 05:39 
Это называется халтура. На от@бись
Ответить | Правка | К родителю #54 | Наверх | Cообщить модератору

47. Скрыто модератором  +/
Сообщение от Аноним (-), 24-Ноя-24, 00:46 
Ответить | Правка | К родителю #33 | Наверх | Cообщить модератору

78. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Neon (??), 24-Ноя-24, 05:35 
Пусть на ассемблере кодят, раз им нужно сложение на аппаратном уровне в конкретной системе. Язык высокого уровня уже по любому абстракция
Ответить | Правка | К родителю #33 | Наверх | Cообщить модератору

90. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от morphe (?), 24-Ноя-24, 06:13 
> Потому что системный язык должен полагаться на то как происходит сложение на аппаратном уровне в конкретной системе, а не воротить абстракцию над абстракцией лишь бы все было везде одинаково.

Вот только всё современное железо реализует это как two's complement, и сложение везде переполняется. (Кроме каких-нибудь мейнфреймов на system z с binary-coded-decimals, но даже там C реализован не через это) Rust же гарантирует что сложение переполняется всегда, потому что стандартные числа в Rust всегда two's complement. (Что на каких-то абстрактных платформах может потребовать софтверной реализации, но таких фактически не существует)

А в сях стандарт написан так, что сложение может происходить на абаках, а потому переполнение - undefined behavior, иначе говоря компилятор в праве оптимизировать код так, будто переполнения никогда не произойдут НА ЛЮБОЙ ПЛАТФОРМЕ.

Ответить | Правка | К родителю #33 | Наверх | Cообщить модератору

42. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от mister_0 (?), 24-Ноя-24, 00:37 
ну так ты проверь перед сложением или можешь после сложения в регистр flags посмотреть, там есть бит переполнения.

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

Ответить | Правка | К родителю #11 | Наверх | Cообщить модератору

49. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (24), 24-Ноя-24, 00:48 
> или можешь после сложения в регистр flags посмотреть

в С?

Ответить | Правка | Наверх | Cообщить модератору

50. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от mister_0 (?), 24-Ноя-24, 00:53 
ну придётся ассемблерную вставку сделать.
Ответить | Правка | Наверх | Cообщить модератору

53. Скрыто модератором  +/
Сообщение от Аноним (-), 24-Ноя-24, 01:04 
Ответить | Правка | Наверх | Cообщить модератору

81. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Neon (??), 24-Ноя-24, 05:40 
А на хрена тогда С нужен ? Если нужно сразу на ассемблере фигачить
Ответить | Правка | К родителю #50 | Наверх | Cообщить модератору

51. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от mister_0 (?), 24-Ноя-24, 00:55 
но я выше ответил, что проще считать post condition выводить weakest predicate и проверять его до вызова и никаких тебе оверфлоу.

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

Ответить | Правка | К родителю #49 | Наверх | Cообщить модератору

65. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (64), 24-Ноя-24, 02:19 
> или ты думаешь, что только использования раста и питона это единственный способ?

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

Ответить | Правка | Наверх | Cообщить модератору

52. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (-), 24-Ноя-24, 01:04 
> ну так ты проверь перед сложением или можешь после сложения в регистр
> flags посмотреть, там есть бит переполнения.

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

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

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

Ответить | Правка | К родителю #42 | Наверх | Cообщить модератору

82. "GCC 15 будет использовать стандарт C23 по умолчанию"  –1 +/
Сообщение от Neon (??), 24-Ноя-24, 05:41 
> В сях нет стандартного способа посмотерть флаги, внезапно.

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

Ответить | Правка | Наверх | Cообщить модератору

97. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (-), 24-Ноя-24, 07:28 
>> В сях нет стандартного способа посмотерть флаги, внезапно.
> Такой системный язык))). Близкий к аппаратуре

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

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

Ответить | Правка | Наверх | Cообщить модератору

12. "GCC 15 будет использовать стандарт C23 по умолчанию"  +1 +/
Сообщение от Аноним (12), 23-Ноя-24, 22:46 
Значит ли это, что gcc 15 будет поддерживать стандарт c23 ПОЛНОСТЬЮ?
Ответить | Правка | Наверх | Cообщить модератору

37. Скрыто модератором  +/
Сообщение от Аноним (-), 24-Ноя-24, 00:22 
Ответить | Правка | Наверх | Cообщить модератору

66. Скрыто модератором  +/
Сообщение от Аноним (64), 24-Ноя-24, 02:20 
Ответить | Правка | К родителю #12 | Наверх | Cообщить модератору

15. "GCC 15 будет использовать стандарт C23 по умолчанию"  +3 +/
Сообщение от Маковод (?), 23-Ноя-24, 23:02 
Всё это ерунда, есть же православный ANSI C (C89). Всё остальное — ненужный реверс инжиниринг с синтаксическим сахаром.
Ответить | Правка | Наверх | Cообщить модератору

16. "GCC 15 будет использовать стандарт C23 по умолчанию"  +4 +/
Сообщение от Маковод (?), 23-Ноя-24, 23:03 
Овер инжиниринг* (будь проклята автозамена)
Ответить | Правка | Наверх | Cообщить модератору

34. "GCC 15 будет использовать стандарт C23 по умолчанию"  –1 +/
Сообщение от Аноним (32), 24-Ноя-24, 00:19 
Сахар это язык zig. Си это та ложка дегтя.
Ответить | Правка | Наверх | Cообщить модератору

41. Скрыто модератором  +2 +/
Сообщение от Аноним (-), 24-Ноя-24, 00:34 
Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

18. "GCC 15 будет использовать стандарт C23 по умолчанию"  –2 +/
Сообщение от nc (ok), 23-Ноя-24, 23:26 
Расширения GNU давно пора принимать в стандарты С и С++. Простые и полезные идеи, уже давно реализованные и многократно проверенные.
Единственное чего не хватает - расширения __declspec(property) в С++, которое есть в msvc и clang, но нет в gcc.
Ответить | Правка | Наверх | Cообщить модератору

25. "GCC 15 будет использовать стандарт C23 по умолчанию"  –1 +/
Сообщение от Аноним (23), 23-Ноя-24, 23:46 
> Расширения GNU нужно гнaть отовсюду сcaными тpяпками, как и всю идеологию GNU.

Подправил, благодарить не обязательно.

Ответить | Правка | Наверх | Cообщить модератору

36. Скрыто модератором  +/
Сообщение от Аноним (32), 24-Ноя-24, 00:21 
Ответить | Правка | Наверх | Cообщить модератору

38. Скрыто модератором  +/
Сообщение от Аноним (-), 24-Ноя-24, 00:23 
Ответить | Правка | Наверх | Cообщить модератору

40. Скрыто модератором  +/
Сообщение от Аноним (-), 24-Ноя-24, 00:31 
Ответить | Правка | Наверх | Cообщить модератору

45. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (45), 24-Ноя-24, 00:42 
Хаипутики ничего нету кроме 11 и 99 версии , очередная обертка
Ответить | Правка | Наверх | Cообщить модератору

57. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от анон (?), 24-Ноя-24, 01:20 
Можешь раскрыть свою мысль, а то, ведь, не понятно чего сказать хотел?
Ответить | Правка | Наверх | Cообщить модератору

61. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Кексперт (?), 24-Ноя-24, 01:49 
Собирайте свои программы 99 версией они будут работать на 35% быстрее , но не 11-ой версии для иос это наказ от главного создателя именно этой ос , у него пока идёт разборка с банками.
Ответить | Правка | Наверх | Cообщить модератору

58. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (58), 24-Ноя-24, 01:20 
14 версия при сборке пакетов ругалась на указатели, 15 будет ругаться если код не той версии. Страшно представить на что 16 версия ругаться будет.
Ответить | Правка | Наверх | Cообщить модератору

83. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Neon (??), 24-Ноя-24, 05:42 
Программист не той системы)
Ответить | Правка | Наверх | Cообщить модератору

60. Скрыто модератором  –1 +/
Сообщение от anonymous (??), 24-Ноя-24, 01:38 
Ответить | Правка | Наверх | Cообщить модератору

63. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (63), 24-Ноя-24, 02:01 
Лишь бы С++ не использовать.
Ответить | Правка | Наверх | Cообщить модератору

70. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от мявemail (?), 24-Ноя-24, 02:59 
что-то фигня какая-то с auto..
auto myNum = superCalculator(2,2);
и иди гадай, кого там возвращает твоя функция.
а потом твой друг пойдет гадать и лазать в соседнем файле, когда откроет код .. псоле чего окажется, что эту фцнкцию где-то там по дороге перекрыли/перепилили/вовсе другой файл включили и она тперь возвращает int, вместо uint :|
зачем вообще такое добавлять в язык со сторой типизацией?
ну, серьезно, это ж лол какой-то.
послезавтра эта функция будет char* возвращать. и я, вместо жалобы на неправельный тип в декларации, увижу 100500 жалоб в черт пойми, каких частях кода.
а auto молча станет char*.
Ответить | Правка | Наверх | Cообщить модератору

71. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от мявemail (?), 24-Ноя-24, 03:00 
я ж правильно логику работы auto поняла?
Ответить | Правка | Наверх | Cообщить модератору

98. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (98), 24-Ноя-24, 07:44 
Писю будешь смоктать?
Ответить | Правка | Наверх | Cообщить модератору

84. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Neon (??), 24-Ноя-24, 05:43 
Какие проблемы ? Смотрим объявление функции. В современных IDE это автоматом подсвечивается при наведении на функцию
Ответить | Правка | К родителю #70 | Наверх | Cообщить модератору

86. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Илья (??), 24-Ноя-24, 05:48 
Значит, типизация не строгая. Должно сломаться всё по цепочке.

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

Ответить | Правка | К родителю #70 | Наверх | Cообщить модератору

99. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (-), 24-Ноя-24, 07:45 
> что-то фигня какая-то с auto..
> auto myNum = superCalculator(2,2);

Да вот блин да, научились у некоторых - а конкретно плюсеров. Но порой таки - удобно.

Прикинь если есть несколько compound types - например struct, и мы переменную декларим в небольшой области видимости, как auto, и там может быть или 1 подвид, или другой, и нам не хочется греть мозг какой именно - ибо код дальше корректно рюхал оба. В таком случае оно выходит довольно элегантно. И как минимум в плбсах катит. А тут... посмотрим, посмотрим.

> и иди гадай, кого там возвращает твоя функция.

Вообще в ide-like это просто go to declaration (как правило шорткат). Хоть конечно и лишний клац.

> по дороге перекрыли/перепилили/вовсе другой файл включили и она тперь возвращает int,
> вместо uint :|

Вообще я не очень понимаю зачем auto в C/C++ совать. Туда же примерно и автоматический вывод типов без явного указания. Это -1 барьер на пути багов. Лишняя аннотация намерений позволяет поймать баг если намерения все же обломались.

> зачем вообще такое добавлять в язык со сторой типизацией?

C никогда не был с вообще совсем строгой. И позволяет оверрайды. Можно приказать считать апельсины лимонами, сделав явный каст. Что будет дальше - на совести програмера, ессно.

> а auto молча станет char*.

Но есть вариант когда код был готов сожрать и то и другое. А с Generic такой вариант еще и "популяризован" фичой в конструкции яп.

Си вообще забавная штука. Вроде низкоуровневый, но функция на самом деле может и получить и вернуть даже struct. Или struct'ы можно присваивать друг другу, однотипные конечно (технически это будет вызов memcpy - кодом выданным компилером на такое действо). А в struct можно еще и допустим указатель на функцию загнать - и тогда получится ну разве что не C++ с "методами", но - нечто достаточно похожее. Ибо struct.myFunc(arg) - будет вполне валидной конструкцией так то. Но поскольку это все же не C++ то это имеет свои лимиты.

Ответить | Правка | К родителю #70 | Наверх | Cообщить модератору

77. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (77), 24-Ноя-24, 05:35 
Зачем снова новый тип char8_t, если уже есть char и unsigned char. Более того есть еще stdint.h где есть int8_t и uint8_t. Почему?
Ответить | Правка | Наверх | Cообщить модератору

85. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Neon (??), 24-Ноя-24, 05:44 
Почему "Ы" ???  Чтоб никто не догадался!)
Ответить | Правка | Наверх | Cообщить модератору

87. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (87), 24-Ноя-24, 05:50 
> Удалена возможность определения функций в стиле K&R C, используемом до принятия спецификации ANSI C и описанном в книге "The C Programming Language" Кернигана и Ритчи.

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

Ответить | Правка | Наверх | Cообщить модератору

88. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (87), 24-Ноя-24, 05:53 
Оригинальный язык С описан в книге "The C Programming Language" Кернигана и Ритчи. Все остальное я могу с полным правом игнорировать. Отныне все мои проекты будут базироваться исключительно на книге "The C Programming Language".
Ответить | Правка | Наверх | Cообщить модератору

100. Скрыто модератором  +/
Сообщение от Аноним (98), 24-Ноя-24, 07:46 
Ответить | Правка | Наверх | Cообщить модератору

89. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (87), 24-Ноя-24, 06:01 
> указания имён неиспользуемых параметров при определении функций (как в C++)
> определения атрибутов как в С++

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

Ответить | Правка | Наверх | Cообщить модератору

92. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от ijuij (?), 24-Ноя-24, 06:35 
> Удалена возможность определения функций в стиле K&R C

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

Ответить | Правка | Наверх | Cообщить модератору

93. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от ijuij (?), 24-Ноя-24, 06:46 
А так мне все нововведения нравятся, и особенно хочу отметить это:

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

🔝

Ответить | Правка | Наверх | Cообщить модератору

101. "GCC 15 будет использовать стандарт C23 по умолчанию"  +/
Сообщение от Аноним (98), 24-Ноя-24, 07:47 
Мммм. Как же мне не хватало переменных длиной 3, 7, 11 бит
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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