可以在clang中禁用此警告吗?警告:#pragma在主文件中一次

时间:2013-05-24 01:17:42

标签: clang pragma suppress-warnings

警告:主文件中的#pragma一次

我们通过clang运行我们的标题以获得部分AST。

是否可以禁用该警告?

5 个答案:

答案 0 :(得分:8)

使用-Wno-pragma-once-outside-header命令行参数。请参阅Clang文档here

答案 1 :(得分:5)

当我意外地在编译源中包含头文件时,我有这个东西(这个头有#pragma一次行)。要从编译源修复此删除标头(可能需要将其替换为.cpp文件)

答案 2 :(得分:4)

“主文件中的#pragma一次”没有-W选项,因此您无法通过常规方式将其关闭。 (但是,Clang开发人员非常清楚没有-W选项的警告很糟糕,而且警告始终获取-W选项的一般规则不幸的是,清理旧的代码是留给沮丧用户的练习。)

如果你不介意shell hackery,你总是可以这样做:

# This gives the warning...
clang -c myheader.h

# ...This doesn't.
echo '#include "myheader.h"' | clang -c -x c++-header -o myheader.h.gch -

尾随-,像往常一样,意思是“从标准输入读取”。 -x c++告诉Clang您正在使用哪种语言(因为当 没有文件时,它无法从文件扩展名中判断出来),并将c++更改为{{1 }表示我们想要生成.gch文件而不是.o文件。

这样生成的两个c++-header文件是 NOT 逐位相同。我不太了解gch文件,告诉你他们的行为可能有什么明显不同。但是,既然你关心的只是Clang的AST,我敢打赌你会好起来的。 :)

答案 3 :(得分:1)

在编译源代码时使用-w(小写w非大写W)选项来禁止此类警告。

答案 4 :(得分:-2)

没有选项来控制它,所以只需在代码中禁止此警告。