【问题标题】:What do the include paths/numbers in preprocessed output of icpc (or gcc I guess) mean?icpc(或我猜是gcc)的预处理输出中的包含路径/数字是什么意思?
【发布时间】:2012-06-22 19:38:49
【问题描述】:

如果我在编译时使用 -E 标志,我会得到预处理输出。

此输出中的某些行是:-

# 4 "../Framework.h" 2
# 1 "../Basic.h" 1
# 1 "/usr/include/c++/4.1.2/queue" 1 3

这是什么意思?您是否可以向我指出更多信息的来源?

【问题讨论】:

标签: c++ include c-preprocessor compiler-flags


【解决方案1】:

它们是关于已处理代码的编译器信息(如果编译器生成调试信息,则随后是调试器)。我不知道确切的语法,但它们会告知包含路径、包含文件中“#include”指令的位置以及包含文件中预处理器未删除的下一行的位置。有了这些信息(并计算未注释的行),编译器可以为您提供诊断信息,将您指向正确的行以及它是如何被包含在内的。

【讨论】:

  • 好吧,我自己也隐约明白了这一点。不幸的是,我的编译器似乎包含一些乱序的标头,我想弄清楚原因(这显然是我的代码中的一个错误)。一个更精确的答案和精确的语法(如果没有通用答案,则为 icpc12)将不胜感激。
  • @owagh:所有标题都应该包含它们各自的依赖项,这反过来意味着包含的顺序无关紧要。是的,这是您的代码中的一个问题,您应该通过查看编译器错误来解决它:每当它告诉您依赖项(无法识别标识符)时,将 include 指令添加到该文件,重新编译,查看错误...
  • @owagh:答案还是一样的:让你的标题独立于包含顺序,通过向前声明类型或包含定义/声明它们的标题来命名所有依赖项。跨度>
猜你喜欢
  • 2013-07-30
  • 2011-07-19
  • 2022-09-28
  • 2017-03-18
  • 1970-01-01
  • 2016-01-10
  • 1970-01-01
  • 2023-04-03
相关资源
最近更新 更多