GCC 13.2.0,MinGW-w64
它无法区分制表符和空格!!!
例如,如果您使用制表符缩进,GCC 将不会给您正确的列号。
像这样:
\t#error //please replace '\t' to tabs!
你可以试试这个。
GCC 将报告:
但是,我确实使用制表符来缩进!
我尝试了G++ 10.3.0 MSYS,没有犯这个错误。
制表符只是一个字符。 GCC在错误消息中显示的列号一般只计算字符数。
无论如何,GCC 无法可靠地告诉您有关这些字符的呈现意义上的列的任何信息。 GCC 不知道您的终端或编辑器/IDE 将如何呈现其输出的字符序列。
演示文稿甚至可能不是等宽字体,因此演示文稿中的“列”甚至没有一致的含义。即使演示文稿采用等宽字体,选项卡的宽度也不是标准化的,并且还取决于演示终端/应用程序。
但是,正如问题下的评论中所述,GCC 有一个选项
-ftabstop=
可以使其在错误报告中将制表符视为指定数量的列。根据默认设置为 8
的文档,即它应该将制表符视为 8
字符,以便在错误报告中进行计数。但这不必与演示文稿中使用的实际宽度相关,并且它可能会更改默认值。