通过M-x compile(运行文件夹的Makefile)从Emacs编译.cpp文件时,在编译缓冲区(以编译模式显示)上看到以下内容:


  • 除了实际的警告消息外,我应如何理解此跟踪?即哪个文件生成了警告? (file1file2file3file4)?
  • 另外,为什么在file2行之后有一个逗号,在file3行之后有一个冒号,带有file4的行包含两个数字,两个冒号分隔开?

  • 我正在使用Emacs的24.2.1gcc-4.4.5-x86_64

    最佳答案

    实际触发警告的结构(在本例中为#warning预处理程序指令)在file4中。上面的内容是#include堆栈的痕迹,最里面但只有一个:在这种情况下,file3包括file2,其中包括file1,其中包括file4

    当gcc知道触发诊断的结构的列号时,它将打印文件名,冒号,行号,另一个冒号和列号,如file4行所示。第一个数字是行号(28),第二个数字是列号(在这种情况下,您会发现##warning在列2中)。当gcc不知道列号时,它仅打印文件名,冒号和行号。 #include堆栈就是这种情况,因为它不会麻烦记录#include指令的确切列。 Emacs的编译模式了解如何解析这两种语法:您会发现,如果使用C-x来翻页诊断程序,则当有可用的列号时,Emacs会将光标放置在适当的列上。

    本报告结尾处的冒号和逗号仅符合英语标点符号惯例;他们什么都不是。

    10-04 17:18