c - 如何在最新编译器中使用仅限 C 的功能?

标签 c mingw codeblocks

我正在使用代码块 13.12,它使用 mingw(GCC 4.7 和 4.8 系列) 即使我选择 C ​​项目而不是 CPP 项目,它也支持按引用调用 (func1(int &a))。 如果我没记错的话,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

关于c - 如何在最新编译器中使用仅限 C 的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33071988/

相关文章:

c++ - “板”未在此范围内声明

while循环终止后的代码不运行

c - 使用 PortAudio 构建 C 项目

c - 在数组内的 char * 上使用 realloc 会更改该数组外部的数据

c++ - 编译一个使用 sfml 和 mingw 从 linux 移植到 windows 的 C++ 程序

c++ - 使用 MinGW 的 c++ unicode 程序中的错误

c++ - Eclipse/Code::Block 不运行应用程序

c++ - 如何在 winapi C++ 上创建一些基本控件,如列表框

c - 尝试使用c语言使用swap语句对两个数字进行降序排序

c - 无效写入大小 : memset