나는 cuda 코드가 포함 된 cmake 프로젝트를 빌드 중입니다. 여러 h 파일을 포함하는 cuda 파일 중 하나를 컴파일 할 수 없습니다. 이것은 내가 locale_facets.h의 isspace 함수와 충돌하는 isspace 매크로
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++ include가 C includes보다 앞에 오도록하십시오. – jxh