C 预处理器添加了自己的注释

发布于 2024-08-22 09:26:58 字数 252 浏览 2 评论 0原文

  1. 如果有的话,下面的注释(显然被 GCC 忽略)叫什么?
  2. 我该如何摆脱它们?

这里:

eisbaw@leno:~/GCC$ cpp < /dev/null
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "<stdin>"
eisbaw@leno:~/GCC$ 
  1. If any, what are the (obviously ignored by GCC) comments below called?
  2. How do I get rid of them?

Here:

eisbaw@leno:~/GCC$ cpp < /dev/null
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "<stdin>"
eisbaw@leno:~/GCC$ 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

北陌 2024-08-29 09:26:58

它们称为行标记,您可以使用 -P 来让 cpp 或 gcc 省略它们。

它们在 cpp 的 预处理器输出 部分中进行了描述手册。

我同意 user30997 的观点,即您可能不想摆脱它们。它们会被 gcc 忽略,因为它们不会影响编译过程,但当您的代码无法正确编译时,它们确实会提供有用的诊断信息。

They are called linemarkers and you can use -P to have cpp or gcc omit them.

They are described in the Preprocessor Output section of the cpp manual.

And I agree with user30997 that you probably don't want to get rid of them. They are ignored by gcc in the sense that they do not affect the compilation process, but they do provide useful diagnostic information when your code does not compile correctly.

就像说晚安 2024-08-29 09:26:58

您可能不想摆脱它们。它们由预处理器插入,以便任何读取此编译单元的编译器都可以确定生成它检查的任何行的源文件和行号。如果没有它,您将无法得到有意义的错误,例如“main.cpp 第 7 行的语法错误:需要分号”。或者无论如何。

如果你真的想抛弃它们,你总是可以快速写一些东西来杀死任何以“#”开头的东西。

You probably don't want to get rid of them. They are inserted by the precprocessor so that any compiler that reads this compilation unit can determine the source file and line number that spawned any line it examines. Without it, you can't get meaningful errors like "syntax error on line 7 of main.cpp: semicolon expected." Or whatever.

If you REALLY want to ditch them, you can always just write something quick that will kill anything beginning with "# ".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文