C++ C++;CUDA C代码中的关键词

C++ C++;CUDA C代码中的关键词,c++,c,cuda,nvcc,C++,C,Cuda,Nvcc,我正在使用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。 < P> NVCC编译C++代码,而不是C

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

< P> <强> NVCC编译C++代码,而不是C代码< /St>。即使它假装在实际中使用C代码,您也只会得到更像C的行为,而不是C编译器()。因此,代码>私下<代码>是一个关键字,不能用作标识符(像任何其他C++关键字)。
实际上,
——主机编译C
已被弃用(它不应该与nvcc一起使用),因为实际上它并没有达到您所期望的效果。

只是错误的广告C支持。实际上,它是一个C++编译器,它有一些C++特性被禁用了。严格来说,你不是编写C代码,而是用更少的代码编写C++代码。不管怎样,广告还不错,他们在自己的网站上描述了这个问题那是在.cu文件的宿主代码中,我想是吧?为什么不用其他东西搜索并替换你代码中的
private
?@didierc源代码不是“我的”。这是一个自由软件,我希望将未来的更新与我的更改合并。我不想为了促进我将来的工作而改变事情。把项目交出来,做你需要做的事情,让它符合你自己的目标。这正是自由软件许可证的目的。