Новичок в программировании на C.
В gcc -std
устанавливает стандарт C, который компилируется, например. gcc -std=c99
.
Можно ли узнать, какой стандарт C установлен в настоящее время?
Как получить текущий диалект c в gcc?
comment
stackoverflow.com/questions/14737104/
- person ooga   schedule 09.04.2014
comment
@ooga Вы правы, это точно такой же вопрос. Однако во всех ответах я нахожу, как установить стандарт C, а не как его получить.
- person Salvador   schedule 09.04.2014
Ответы (2)
Вы можете использовать эту программу для печати по умолчанию:
#include <stdio.h>
int main() {
#ifdef __STRICT_ANSI__
printf("c");
#else
printf("gnu");
#endif
#ifdef __STDC_VERSION__
#if __STDC_VERSION__ == 199901L
puts("99");
#elif __STDC_VERSION__ == 201112L
puts("11");
#else
puts("(unknown)");
#endif
#else
puts("90");
#endif
return 0;
}
person
ooga
schedule
09.04.2014
Существуют различные символы препроцессора, которые определены в различных режимах. Вы можете использовать gcc -E -dM -x c /dev/null
для получения дампа всех предопределенных символов препроцессора.
В режиме C99 (-std=c99
или -std=gnu99
) символ __STDC_VERSION__
определяется как 199901L
. В режиме C11 (с -std=c11
или std=gnu11
) это 201112L
В строгом режиме C (-std=cXX
вместо -std=gnuXX
) символ __STRICT_ANSI__
определяется как 1
.
person
Chris Dodd
schedule
08.04.2014
gcc -E -dM
выдает gcc: фатальная ошибка: нет входных файлов. компиляция завершена. как в Ubuntu, так и в Windows.
- person Salvador; 09.04.2014
@Salvador: ну да, вам нужно предоставить драйверу компилятора хотя бы один входной файл, чтобы он знал, на каком языке компилировать. Вы можете дать ему любой существующий файл или создать пустой с расширением
.c
или .cpp
.
- person Chris Dodd; 10.04.2014
Извините, но новичкам нужен готовый код как
echo | cpp -dM
, который выводит те же предопределенные настройки препроцессора (и не требует файла для компиляции).
- person Salvador; 16.04.2014