C++ 如何检查C++;gcc工具的头文件是否正确?

C++ 如何检查C++;gcc工具的头文件是否正确?,c++,gcc,header,C++,Gcc,Header,如何使用gcc工具检查头文件的语法是否正确?您可以尝试使用g++编译它,如g++-c myheader.h。这将捕获任何语法错误。制作一个cpp文件,其中只包含头并编译它;) 我通常确保每个头都包含在源文件中。例如,如果我正在开发的库只包含头文件,我会专门编写一个裸体单元测试,专门包含任何独立的头文件,并测试该头文件中任何模板的实例化。-fsyntax only 完全符合您的要求: echo 'int i;' > good.hpp echo 'int i' > bad.hpp g++

如何使用gcc工具检查头文件的语法是否正确?

您可以尝试使用
g++
编译它,如
g++-c myheader.h
。这将捕获任何语法错误。

制作一个cpp文件,其中只包含头并编译它;)

我通常确保每个头都包含在源文件中。例如,如果我正在开发的库只包含头文件,我会专门编写一个裸体单元测试,专门包含任何独立的头文件,并测试该头文件中任何模板的实例化。

-fsyntax only

完全符合您的要求:

echo 'int i;' > good.hpp
echo 'int i' > bad.hpp
g++ -fsyntax-only good.hpp
echo $?
# 0
g++ -fsyntax-only bad.hpp
# bad.hpp:1:5: error: expected initializer at end of input
# int i
#     ^
echo $?
# 1
g++ --version | head -n1
g++ (Ubuntu 4.8.1-2ubuntu1~12.04) 4.8.1
mang++
说:

-fsyntax-only
    Check the code for syntax errors, but don't do anything beyond that.

编写一个存根程序,包含头并编译它?如果没有更多的信息,这个问题不会得到有用的答案。。。在源文件中使用它…我认为这个答案应该被标记为正确的,因为它解释了问题的确切解决方案,而不仅仅是解决方法。还执行类型检查(即,除了词汇和语法之外还执行一些静态语义检查)
g++-fsyntax only-Wall-Wextra-Wno deprecated-std=c++11 myheader.h