4

我正在使用 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。

4

1 回答 1

4

NVCC 编译 C++ 代码,而不是 C 代码。即使它假装在现实中使用 C 代码,您也只会得到更像 C 的行为,而不是 C 编译器(参见这篇文章)。出于这个原因private,它是一个关键字,不能用作标识符(像任何其他 C++ 关键字一样)。

实际上--host-compilation C已被弃用(它不应该与 nvcc 一起使用),因为实际上它并没有达到您的预期。

于 2013-03-12T13:38:31.003 回答