我正在使用 CUDA 来加速 C 程序的某些部分。该程序使用一些 C++ 关键字作为标识符,因此它不会编译为 C++。既然我用 CUDA 改了,那我怎么用 NVCC 编译呢?
例如,我收到错误:
table.h(65): error: expected an identifier
编译代码时:
struct sw_table_position {
unsigned long private[4];
};
这是完全有效的 C,但无效的 C++。我正在使用 CUDA 5。
NVCC 编译 C++ 代码,而不是 C 代码。即使它假装在现实中使用 C 代码,您也只会得到更像 C 的行为,而不是 C 编译器(参见这篇文章)。出于这个原因private,它是一个关键字,不能用作标识符(像任何其他 C++ 关键字一样)。
实际上--host-compilation C已被弃用(它不应该与 nvcc 一起使用),因为实际上它并没有达到您的预期。