编译器生成汇编代码(.s文件)时,C预处理器输出中的行标记(# 1 "donothing.cpp" 2
)是否被使用?
我认为它们用于产生编译器错误和调试信息。因此,在尝试跟踪宏的流程时,我可以安全地关闭它们(使用-P
)吗?
我正在学习C++和C预处理器。我在许多C++教程中看到,宏通常很难正确编写,并且可能会产生意外的结果。以下是一个预处理器输出示例。C预处理器:预处理器输出
$ g++ -Wall -std=c++11 -E donothing.cpp
# 1 "donothing.cpp"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 391 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "donothing.cpp" 2
int main()
{
return 0;
}
$ g++ -Wall -std=c++11 -E donothing.cpp -P
int main()
{
return 0;
}
查看预处理器输出是否是调试编译器错误的方法?C/C++开发人员如何调试宏(因为我预计人们经常使用多个.cpp文件并且总会出现编译器错误)?