4

私はCUDAを使用してCプログラムの一部を高速化しています。このプログラムは、いくつかのC ++キーワードを識別子として使用するため、C++としてコンパイルされません。CUDAで変更したので、どうすればNVCCでコンパイルできますか?

たとえば、次のエラーが発生します。

table.h(65): error: expected an identifier

コードをコンパイルするとき:

struct sw_table_position {
    unsigned long private[4];
};

これは完全に有効なCですが、無効なC++です。CUDA5を使用しています。

4

1 に答える 1

4

NVCCは、Cコードではなく、C++コードをコンパイルします。実際にはCコードを消費するふりをしている場合でも、Cコンパイラではなく、Cに似た動作が得られます(この投稿を参照)。このため、これprivateはキーワードであり、識別子として使用することはできません(他のC ++キーワードと同様)。

実際に--host-compilation Cは、期待どおりに機能しないため、非推奨になっています(nvccでは使用しないでください)。

于 2013-03-12T13:38:31.003 に答える