2013-03-12 87 views
4

关键字我使用CUDA来加速C程序的某些部分。这个程序使用一些C++关键字作为标识符,所以它不能编译为C++。现在我使用CUDA进行了更改,如何使用NVCC进行编译?C++的CUDA C语言代码

举例来说,我得到的错误:

table.h(65): error: expected an identifier 
编译代码时

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

这是完全合法的C,但无效的C++。我使用CUDA 5

+0

也就是说在主机代码.CU文件里面,我把它? – talonmies 2013-03-12 14:31:52

+2

为什么不用别的东西来搜索和替换代码中的'private'? – didierc 2013-03-12 14:38:57

+0

@didierc来源不是'我的'。这是一个免费的软件,我希望将未来的更新与我的更改合并在一起。我不想在未来改变事情来促进我的工作。 – lvella 2013-04-07 16:51:41

回答

4

NVCC编译C++代码,而不是C代码。即使它假装消耗在现实中的C代码,你只是得到一个更类似C的行为,而不是C编译器(see this post)。出于这个原因private是一个关键字,并且不能被用作标识符(像任何其他C++关键字)。

实际上--host-compilation C已弃用(它不应该与nvcc一起使用),因为它实际上并不符合你的期望。

+0

那么,nVidia是否错误地为C/C++广告支持? – lvella 2013-03-12 13:52:35

+1

只是错误的广告** C支持**。实际上,它是一个禁用了_some_ C++功能的C++编译器。所以,严格来说,你不是在编写C代码,而是在C++代码中使用较少的东西。无论如何,不​​是不好的广告,他们在他们的网站上描述这个_issue_。 ;) – 2013-03-12 13:59:45

+0

我希望我早点看过他们的_issue_说明...... – lvella 2013-03-12 14:02:30