C编程中的新手。
在gcc -std
中设置编译的C标准,例如gcc -std=c99
。
可以知道当前设置了哪个C标准?
答案 0 :(得分:4)
在各种模式中定义了各种预处理器符号。您可以使用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
答案 1 :(得分: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;
}