【发布时间】:2012-06-19 00:47:59
【问题描述】:
我正在构建一个包含 cuda 代码的 cmake 项目。我无法编译包含多个 h 文件的 cuda 文件之一。这是我收到的编译器错误
In file included from /usr/include/c++/4.4/bits/basic_ios.h:39,
from /usr/include/c++/4.4/ios:45,
from /usr/include/c++/4.4/ostream:40,
from /usr/include/c++/4.4/iostream:40,
from /home/pfeifs/Developement/Deform/LinuxDeform/LibDeform/Deform/cutil_comfunc.h:20,
from /home/pfeifs/Developement/Deform/LinuxDeform/LibDeform/Deform/VectorMathDef.h:22,
from /home/pfeifs/Developement/Deform/LinuxDeform/LibDeform/src/Deform/VectorMath.cu:15:
/usr/include/c++/4.4/bits/locale_facets.h:2521:44: error: macro "isspace" passed 2 arguments, but takes just 1
isspace() 被定义为在<ctype.h> 中需要一个参数的宏,并在locale_facets.h 中声明为模板函数。 (这些都是标准文件。)但是在locale_facets.h 的开头,包含<cctype> 并且取消声明宏。
非常感谢您对此问题的任何帮助或见解。
【问题讨论】:
-
尝试重新排序
cutil_comfunc.h文件中的#include 文件顺序,以便C++ 包含在C 包含之前。