我有一些头文件是为在C99程序中使用而编写的.此标头包含所有函数定义,并且不与源文件配对.我将它包含在C++文件中.
我的C++编译器标志包括-pedantic -std=c++11,它在头文件中给出了各种警告,例如"ISO C++禁止复合文字"和"ISO C++禁止可变长度数组".显然,C++编译器将C99代码视为C++.两个问题:
谢谢
当尝试编写将在使用不同编译器的各种平台上正确运行的代码时,这是一个潜在的问题吗?
是.GCC可能只是发出警告,其他编译器(例如Visual Studio或其他选项的GCC)很可能会出错.
什么是解决警告并生成标准符合代码的好方法?
解决问题的正确方法是在C和C++的公共子集中编写标头.使用C99功能的函数和对象定义(例如可变长度数组和复合文字)应该移动到单独的C源文件(使用C编译器编译!).
| 归档时间: |
|
| 查看次数: |
1298 次 |
| 最近记录: |