如何在最新的编译器中使用仅限 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