0

cuda コードを含む cmake プロジェクトを構築しています。複数の h ファイルを含む cuda ファイルの 1 つをコンパイルできません。これは私が受け取るコンパイルエラーです

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()で 1 つの引数を必要とするマクロとして定義され<ctype.h>、 でテンプレート化された関数として宣言されlocale_facets.hます。(どちらも標準ファイルです。)ただし、先頭に locale_facets.h,<cctype>が含まれており、マクロの宣言を解除しています。

この問題に関するヘルプや洞察をいただければ幸いです。

4

1 に答える 1

5

C と C++ のヘッダーを混在させたり一致させたりしないでください。

2 つのパラメーターを使用#include <locale>してstd::isspaceテンプレートを取得するために使用します。STL と競合しない#include <cctype>C++ セーフ インクルードに使用します。ctype.h

C プログラムを作成していて、C++ を使用したくない、または必要としない場合は、パラメーターが 1 つだけの関数を含めctype.hて使用しても問題はありません。isspace

于 2012-06-16T00:46:10.013 に答える