LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

Про C:

1. Притащили идиотизм с nullptr из C++C23.

2. enum-ы с заданным базовым типом оттуда же (хорошо).

3. Поддержка varargs без фиксированного аргумента и ещё что-то (вроде не мешает, но зачем оно нужно непонятно - функция как-то должна узнать что ей брать из varargs, а без хотя бы одного фиксированного аргумента это затруднительно).

4. Вывод типов (auto x = sin(1);).

5. constexpr (норм, но в proposal-е смешное обоснование: типа без constexpr в const можно записать out-of-range значение и компилятор молча это примет а с constexpr нельзя).

6. Сомнительная фигня:

static struct foo* p = &(static struct foo) {1, 'a', 'b'}; Нововведение в том что инициализатор может быть анонимной переменной (из-за static), под которую выделена память, но у которой нет своего идентификатора. Плохо, только вносит путаницу. Так и до анонимных функций (которыми заполнены мусорные языки типа js) недалеко.

7. Слова (смысл понятен, расписывать не буду) typeof, typeof_unqual, alignas, alignof, bool, false, static_assert, thread_local, true, noreturn. Тут некоторая доля вранья, поскольку больше половины из них уже было, а теперь их типа заново внесли от имени С23.

8. Инициализация массивов и структур пустыми скобками (опять враньё, уже было с древних времён).

9. Макросы версий заголовочных файлов __STDC_VERSION_*_H__

10. Удалено ATOMIC_VAR_INIT (я и не знал что это такое).

11. Макрос «unreachable» в <stddef.h> (видимо для пометки соотв. мест кода).

12. Удалены триграфы (давно пора).

13. Больше нельзя делать прототипы функций с пустыми скобками вместо аргументов в качестве открытого списка аргументов (хорошо, но всякий древний до-С89 хлам сломается). Теперь пустые скобки считаются как (void) - а это уже плохо, провоцирует баги. Надо было просто запретить.

14. -Wformat умеет проверять %wN и %wfN для printf и scanf (лень искать что это, скорее всего какое-то ненужно).

15. Какая-то муть с юникодом и смайликами в идентификаторах, не разобрался в чём суть https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2836.pdf

16. -Wenum-int-mismatch для проверки соответствия базового типа enum и целочисленного типа в каких-то операциях.

Исправление firkax, :

Про C:

1. Притащили идиотизм с nullptr из C++C23.

2. enum-ы с заданным базовым типом оттуда же (хорошо).

3. Поддержка varargs без фиксированного аргумента и ещё что-то (вроде не мешает, но зачем оно нужно непонятно - функция как-то должна узнать что ей брать из varargs, а без хотя бы одного фиксированного аргумента это затруднительно).

4. Вывод типов (auto x = sin(1);).

5. constexpr (норм, но в proposal-е смешное обоснование: типа без constexpr в const можно записать out-of-range значение и компилятор молча это примет а с constexpr нельзя).

6. Сомнительная фигня:

static struct foo* p = &(static struct foo) {1, 'a', 'b'}; Нововведение в том что инициализатор может быть анонимной переменной (из-за static), под которую выделена память, но у которой нет своего идентификатора. Плохо, только вносит путаницу. Так и до анонимных функций (которыми заполнены мусорные языки типа js) недалеко.

7. Слова (смысл понятен, расписывать не буду) typeof, typeof_unqual, alignas, alignof, bool, false, static_assert, thread_local, true, noreturn. Тут некоторая доля вранья, поскольку больше половины из них уже было, а теперь их типа заново внесли от имени С23.

8. Инициализация массивов и структур пустыми скобками (опять враньё, уже было с древних времён).

9. Максроы версий заголовочных файлов __STDC_VERSION_*_H__

10. Удалено ATOMIC_VAR_INIT (я и не знал что это такое).

11. Макрос «unreachable» в <stddef.h> (видимо для пометки соотв. мест кода).

12. Удалены триграфы (давно пора).

13. Больше нельзя делать прототипы функций с пустыми скобками вместо аргументов в качестве открытого списка аргументов (хорошо, но всякий древний до-С89 хлам сломается). Теперь пустые скобки считаются как (void) - а это уже плохо, провоцирует баги. Надо было просто запретить.

14. -Wformat умеет проверять %wN и %wfN для printf и scanf (лень искать что это, скорее всего какое-то ненужно).

15. Какая-то муть с юникодом и смайликами в идентификаторах, не разобрался в чём суть https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2836.pdf

16. -Wenum-int-mismatch для проверки соответствия базового типа enum и целочисленного типа в каких-то операциях.

Исправление firkax, :

Про C:

1. Притащили идиотизм с nullptr из C++C23.

2. enum-ы с заданным базовым типом оттуда же (хорошо).

3. Поддержка varargs без фиксированного аргумента и ещё что-то (вроде не мешает, но зачем оно нужно непонятно - функция как-то должна узнать что ей брать из varargs, а без хотя бы одного фиксированного аргумента это затруднительно).

4. Вывод типов.

5. constexpr (норм, но в proposal-е смешное обоснование: типа без constexpr в const можно записать out-of-range значение и компилятор молча это примет а с constexpr нельзя).

6. Сомнительная фигня:

static struct foo* p = &(static struct foo) {1, 'a', 'b'}; Нововведение в том что инициализатор может быть анонимной переменной (из-за static), под которую выделена память, но у которой нет своего идентификатора. Плохо, только вносит путаницу. Так и до анонимных функций (которыми заполнены мусорные языки типа js) недалеко.

7. Слова (смысл понятен, расписывать не буду) typeof, typeof_unqual, alignas, alignof, bool, false, static_assert, thread_local, true, noreturn. Тут некоторая доля вранья, поскольку больше половины из них уже было, а теперь их типа заново внесли от имени С23.

8. Инициализация массивов и структур пустыми скобками (опять враньё, уже было с древних времён).

9. Максроы версий заголовочных файлов __STDC_VERSION_*_H__

10. Удалено ATOMIC_VAR_INIT (я и не знал что это такое).

11. Макрос «unreachable» в <stddef.h> (видимо для пометки соотв. мест кода).

12. Удалены триграфы (давно пора).

13. Больше нельзя делать прототипы функций с пустыми скобками вместо аргументов в качестве открытого списка аргументов (хорошо, но всякий древний до-С89 хлам сломается). Теперь пустые скобки считаются как (void) - а это уже плохо, провоцирует баги. Надо было просто запретить.

14. -Wformat умеет проверять %wN и %wfN для printf и scanf (лень искать что это, скорее всего какое-то ненужно).

15. Какая-то муть с юникодом и смайликами в идентификаторах, не разобрался в чём суть https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2836.pdf

16. -Wenum-int-mismatch для проверки соответствия базового типа enum и целочисленного типа в каких-то операциях.

Исходная версия firkax, :

Про C:

1. Притащили идиотизм с nullptr из C23.

2. enum-ы с заданным базовым типом оттуда же (хорошо).

3. Поддержка varargs без фиксированного аргумента и ещё что-то (вроде не мешает, но зачем оно нужно непонятно - функция как-то должна узнать что ей брать из varargs, а без хотя бы одного фиксированного аргумента это затруднительно).

4. Вывод типов.

5. constexpr (норм, но в proposal-е смешное обоснование: типа без constexpr в const можно записать out-of-range значение и компилятор молча это примет а с constexpr нельзя).

6. Сомнительная фигня:

static struct foo* p = &(static struct foo) {1, 'a', 'b'}; Нововведение в том что инициализатор может быть анонимной переменной (из-за static), под которую выделена память, но у которой нет своего идентификатора. Плохо, только вносит путаницу. Так и до анонимных функций (которыми заполнены мусорные языки типа js) недалеко.

7. Слова (смысл понятен, расписывать не буду) typeof, typeof_unqual, alignas, alignof, bool, false, static_assert, thread_local, true, noreturn. Тут некоторая доля вранья, поскольку больше половины из них уже было, а теперь их типа заново внесли от имени С23.

8. Инициализация массивов и структур пустыми скобками (опять враньё, уже было с древних времён).

9. Максроы версий заголовочных файлов __STDC_VERSION_*_H__

10. Удалено ATOMIC_VAR_INIT (я и не знал что это такое).

11. Макрос «unreachable» в <stddef.h> (видимо для пометки соотв. мест кода).

12. Удалены триграфы (давно пора).

13. Больше нельзя делать прототипы функций с пустыми скобками вместо аргументов в качестве открытого списка аргументов (хорошо, но всякий древний до-С89 хлам сломается). Теперь пустые скобки считаются как (void) - а это уже плохо, провоцирует баги. Надо было просто запретить.

14. -Wformat умеет проверять %wN и %wfN для printf и scanf (лень искать что это, скорее всего какое-то ненужно).

15. Какая-то муть с юникодом и смайликами в идентификаторах, не разобрался в чём суть https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2836.pdf

16. -Wenum-int-mismatch для проверки соответствия базового типа enum и целочисленного типа в каких-то операциях.