如何在最新的编译器中使用仅限 C 的特性?
How to use C only features in latest compilers?
我正在使用 codeblock 13.12,它使用 mingw(GCC 4.7 和 4.8 系列)
它支持通过引用调用 (func1(int &a)),尽管我选择的是 C 项目而不是 CPP 项目。 如果我没记错的话,C 中没有引用调用的概念,即使使用指针也是按值调用的。
我的问题是如何使用仅限 C 的功能?这个有什么设置吗?我在工具链中看到它正在使用 mingw32-gcc.exe 进行 C 编译。
如何知道它真正使用的是哪个编译器版本(如 C11、C99 等)?
使用扩展名 .c
命名您的文件。绝对不是 .cc
或 .cpp
使用gcc
作为命令行编译,而不是g++
如果有疑问,请使用 -std=
命令行参数强制使用您想要的 C 风格(例如 -std=C90
、-std=C99
,甚至 -std=C11
) .还有 -ansi
.
此外,验证您的代码是否被编译为 C 而不是 C++ 的一种廉价而肮脏的方法是将此代码块添加到您的源代码中。如果是C++,编译器会报错。
#ifdef __cplusplus
int compile_time_assert[-1];
#endif
我正在使用 codeblock 13.12,它使用 mingw(GCC 4.7 和 4.8 系列) 它支持通过引用调用 (func1(int &a)),尽管我选择的是 C 项目而不是 CPP 项目。 如果我没记错的话,C 中没有引用调用的概念,即使使用指针也是按值调用的。 我的问题是如何使用仅限 C 的功能?这个有什么设置吗?我在工具链中看到它正在使用 mingw32-gcc.exe 进行 C 编译。 如何知道它真正使用的是哪个编译器版本(如 C11、C99 等)?
使用扩展名 .c
命名您的文件。绝对不是 .cc
或 .cpp
使用gcc
作为命令行编译,而不是g++
如果有疑问,请使用 -std=
命令行参数强制使用您想要的 C 风格(例如 -std=C90
、-std=C99
,甚至 -std=C11
) .还有 -ansi
.
此外,验证您的代码是否被编译为 C 而不是 C++ 的一种廉价而肮脏的方法是将此代码块添加到您的源代码中。如果是C++,编译器会报错。
#ifdef __cplusplus
int compile_time_assert[-1];
#endif