行指令的样式是GCC扩展

时间:2015-06-23 11:01:34

标签: c++ linux gcc cuda

这是什么意思,我该如何摆脱它?让我解释一下:

我在一个开源项目上进行合作,其中全局编译器设置包括-Werror和-pedantic,所以为了接受我的贡献,我必须遵守这些。

其次,我是Windows用户,所以我很高兴地构建了这个项目的一个新组件,现在只是意识到它不能在Linux上编译,在每一行上抛出大量的这些警告(在CUDA(.cu)源文件的每个第3个char上都是特定的,该文件是我的组件的一部分。

我正在使用带有FindCUDA脚本的cmake来编译CUDA。源文件不包含任何#line指令,因此我对GCC抱怨的内容完全不了解。

首先我认为这是行结尾,但Linux"文件"命令将.cu文件报告为" C源,ASCII文本",no"与CRLF行终止符"。

开源项目的其余部分并不包含任何CUDA,所以我没有什么可比较的。

1 个答案:

答案 0 :(得分:4)

我认为正在发生的事情是,nvcc正在从您的.cu源文件中生成C源以供gcc使用,并且这样做包括格式#1234的gcc样式行指令。通过使用gcc -pedantic编译此中间C代码,您会遇到问题,因为这些是gcc样式的行指令并且是非标准的。解决方案是不使用-pedantic,至少对于项目的CUDA部分。