Дата и время публикации:
Основой GNU C является использование расширений к ISO C, обеспечивая возможностями, которые отсутствуют в стандарте ISO языка Си, так если указать опцию -pedantic или -Wpedantic, на выходе GCC закидает предупреждающими сообщениями, если встретит что-то в обход стандарта. Поэтому, когда используются такого рода опции или -iso со значениями c90, c99 и им подобных, нужно учитывать, что какое-либо отклонение от стандарта может сопровождаться не только выдачей ни к чему обязывающих сообщений, но и заставят компилятор завершить работу с ошибкой.
В листинге 1 приведен код для тестирования возможности использования GNU C.
Листинг 1
1 #ifndef __GNUC__ 2 #error "It's nonsense!The macros __GNUC__ is not predefined."What compiler do you use?" 3 #else 4 #warning "The macros __GNUC__ is always predefined by the GNU C preprocessor!" 5 #endif /*__GNUC__*/
В строке 1 проверяется определен макрос __GNUC__ или нет. Соответственно, если он отсутствует препроцессорная директива #error в строке 2 заставит GCC выдать, что такое событие является нонсенсом, а в строке 3, напротив директива #warning сообщит, что макрос __GNUC__ всегда предопределен в процессоре GNU C.
Ниже, перечисленные статьи по использованию расширений семейства языка С для компилятора GCC основываются на справочной информации из раздела Extensions to the C Language Family и документа GCC Manual.
- Как использовать метки в качестве значений на примере обработки аргументов командной строки
- Как использовать встраиваемые функции в качестве макросов оптимизация кода программы за счет интеграции её в вызываемую функцию
- Как узнать насколько выравнивать типы данных или переменные описывается получение данных о минимальном выравнивании
- Как использовать атрибуты выравнивания описывается как производить выравнивание типов и структур данных
- Как использовать операторы-выражения или как превратить "опасные макросы" в безопасные