作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在构建一个包含 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>
包含在内并且取消声明宏。
非常感谢任何对此问题的帮助或见解。
最佳答案
不要混合搭配 C 和 C++ header 。
使用 #include <locale>
拉入 std::isspace
带有两个参数的模板。使用 #include <cctype>
对于 ctype.h
的 C++ 安全包含不会与 STL 发生冲突。
如果您正在编写 C 程序并且不想或不需要 C++,那么包括 ctype.h
应该没有问题并使用 isspace
只有一个参数的函数。
关于c++ - isspace 宏与 locale_facets.h 中的 isspace 函数冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11059308/
我正在构建一个包含 cuda 代码的 cmake 项目。我无法编译包含多个 h 文件的 cuda 文件之一。这是我收到的编译器错误 In file included from /usr/include
我是一名优秀的程序员,十分优秀!