Visual Studio包含文件中的意外错误

时间:2012-05-21 03:54:37

标签: c++ windows visual-studio-2010

我已经使用f2c转换器(f2c)将一些传统的Fortran代码转换为C,并且我在Windows 7(64位)上使用Cmake创建了一个Visual Studio 10解决方案。我还必须将我的C ++程序(test.cpp,包含我的主函数)与f2c库(使用nmake在我的系统上构建)链接起来。虽然我已经与CMake和Visual Studio广泛合作,但在编译程序后,我现在收到了一些与Visual Studio附带的头文件相关的神秘错误:

2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(141): error C2059: syntax error : '('
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(141): error C2059: syntax error : '-'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(141): error C2059: syntax error : ')'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(250): error C2027: use of undefined type '_Ty'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(250): error C2226: syntax error : unexpected type 'std::complex<_Other>'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(250): error C2988: unrecognizable template declaration/definition
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(250): error C2059: syntax error : '-'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(250): error C2065: '_Ty' : undeclared identifier
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(250): error C2059: syntax error : ')'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(263): error C2065: '_Ty' : undeclared identifier
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(263): error C2065: '_Ty' : undeclared identifier
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(264): error C2143: syntax error : missing ';' before '{'
2>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xcomplex(264): error C2447: '{' : missing function header (old-style formal list?)

从头开始创建Visual Studio解决方案文件似乎也不能很好地工作,我仍然收到相同的错误。我该怎么做才能找出这些错误的问题?显然我包含或写入的文件有问题,但它可能是什么?错误不会立即指向代码的某个部分,因此调试具有挑战性。

这是f2c.h头文件(f2c.h)的链接。我添加了

#ifdef __cplusplus
extern "C" {
#endif

到顶部

#ifdef __cplusplus
 }
#endi

到这个头文件的底部,因为我的test.cpp是一个C ++程序。

1 个答案:

答案 0 :(得分:2)

问题似乎是f2c.h定义了许多宏,包括一些用于数学函数的宏,例如abs。当标准头文件中遇到相同的标识符时,这些宏会导致问题。

出于这个原因,我建议您始终将f2c.h作为文件中的最后一个标题(或者在包含其他文件之前#undef包含冲突的宏)。