警告:#pragma在主文件中一次
我们通过clang运行我们的标题以获得部分AST。
是否可以禁用该警告?
使用-Wno-pragma-once-outside-header
命令行参数。请参阅Clang文档here。
当我不小心在编译源中包含头文件时,我有这个东西(这个头有#pragma一次行)。要从编译源修复此删除标头(可能需要将其替换为.cpp文件)
“#pragma once in main file”中没有-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 -
像往常一样,尾随的-
意味着“从stdin读取”。 -x c++
告诉Clang你正在使用什么语言(因为当没有文件时它无法从文件扩展名告知),并且将c++
更改为c++-header
意味着我们想要生成.gch文件而不是.o文件。
这样产生的两个.gch
文件并不是一点一滴的。我不太了解gch文件,告诉你他们的行为可能有什么明显不同。但是,既然你关心的只是Clang的AST,我敢打赌你会好起来的。 :)
使用-w
(小写w
而不是大写W
)选项,同时编译源以抑制此类警告。
没有选项来控制它,所以只需在代码中禁止此警告。