高手请指教,C语言预处理之后行号的问题

时间:2021-01-28 14:48:10
闲话不多说,Hello.c程序,gcc -E Hello.c -o Hello.i.
打开Hello.i,前两行是

# 1 "helloworld.c"
# 1 "/usr/include/stdio.h" 1 3
因为后面很长,不列举

每行的第一个数字好理解,表示行号。请问第二行的最后两个数字 1 3代表什么意思。
查阅很多资料没找到答案,请明白的给介绍下

11 个解决方案

#1


参考gcc相关源代码?

#2


引用 1 楼 zhao4zhong1 的回复:
参考gcc相关源代码?

表示力不从心

#3


引用 2 楼 zxqatqd 的回复:
Quote: 引用 1 楼 zhao4zhong1 的回复:

参考gcc相关源代码?

表示力不从心

“会当凌绝顶,一览众山小。”
用这句诗勉励一下帖主。

#4


帮顶一下,顺便膜拜赵老师~

#5


问题的答案就在你眼前再深一步的位置

#6


引用 5 楼 derekrose 的回复:
问题的答案就在你眼前再深一步的位置

行百里半九十。
“百尺竿头,更进一步”谈何容易啊!

这个世界上最大的差别和最远的距离都存在于“说”和“做”之间。
常立志不如立长志,立长志不如立即干!

#7


Source file name and line number information is conveyed by lines of the form

     # linenum filename flags
These are called linemarkers. They are inserted as needed into the output (but never within a string or character constant). They mean that the following line originated in file filename at line linenum. filename will never contain any non-printing characters; they are replaced with octal escape sequences.

After the file name comes zero or more flags, which are ‘1’, ‘2’, ‘3’, or ‘4’. If there are multiple flags, spaces separate them. Here is what the flags mean:

‘1’
This indicates the start of a new file. 
‘2’
This indicates returning to a file (after having included another file). 
‘3’
This indicates that the following text comes from a system header file, so certain warnings should be suppressed. 
‘4’
This indicates that the following text should be treated as being wrapped in an implicit extern "C" block.

http://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html

#8


顶LS的。。

#9


7楼就是江湖所谓“达人”啊!

#10


忍不住顶一个,总是怀疑某些人有谢耳朵的图像式记忆能力

#11


引用 7 楼 lunat 的回复:
Source file name and line number information is conveyed by lines of the form

     # linenum filename flags
These are called linemarkers. They are inserted as needed into the output (but never within a string or character constant). They mean that the following line originated in file filename at line linenum. filename will never contain any non-printing characters; they are replaced with octal escape sequences.

After the file name comes zero or more flags, which are ‘1’, ‘2’, ‘3’, or ‘4’. If there are multiple flags, spaces separate them. Here is what the flags mean:

‘1’
This indicates the start of a new file. 
‘2’
This indicates returning to a file (after having included another file). 
‘3’
This indicates that the following text comes from a system header file, so certain warnings should be suppressed. 
‘4’
This indicates that the following text should be treated as being wrapped in an implicit extern "C" block.

http://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html

忍不住要说一句高手啊。
非常感谢。

#1


参考gcc相关源代码?

#2


引用 1 楼 zhao4zhong1 的回复:
参考gcc相关源代码?

表示力不从心

#3


引用 2 楼 zxqatqd 的回复:
Quote: 引用 1 楼 zhao4zhong1 的回复:

参考gcc相关源代码?

表示力不从心

“会当凌绝顶,一览众山小。”
用这句诗勉励一下帖主。

#4


帮顶一下,顺便膜拜赵老师~

#5


问题的答案就在你眼前再深一步的位置

#6


引用 5 楼 derekrose 的回复:
问题的答案就在你眼前再深一步的位置

行百里半九十。
“百尺竿头,更进一步”谈何容易啊!

这个世界上最大的差别和最远的距离都存在于“说”和“做”之间。
常立志不如立长志,立长志不如立即干!

#7


Source file name and line number information is conveyed by lines of the form

     # linenum filename flags
These are called linemarkers. They are inserted as needed into the output (but never within a string or character constant). They mean that the following line originated in file filename at line linenum. filename will never contain any non-printing characters; they are replaced with octal escape sequences.

After the file name comes zero or more flags, which are ‘1’, ‘2’, ‘3’, or ‘4’. If there are multiple flags, spaces separate them. Here is what the flags mean:

‘1’
This indicates the start of a new file. 
‘2’
This indicates returning to a file (after having included another file). 
‘3’
This indicates that the following text comes from a system header file, so certain warnings should be suppressed. 
‘4’
This indicates that the following text should be treated as being wrapped in an implicit extern "C" block.

http://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html

#8


顶LS的。。

#9


7楼就是江湖所谓“达人”啊!

#10


忍不住顶一个,总是怀疑某些人有谢耳朵的图像式记忆能力

#11


引用 7 楼 lunat 的回复:
Source file name and line number information is conveyed by lines of the form

     # linenum filename flags
These are called linemarkers. They are inserted as needed into the output (but never within a string or character constant). They mean that the following line originated in file filename at line linenum. filename will never contain any non-printing characters; they are replaced with octal escape sequences.

After the file name comes zero or more flags, which are ‘1’, ‘2’, ‘3’, or ‘4’. If there are multiple flags, spaces separate them. Here is what the flags mean:

‘1’
This indicates the start of a new file. 
‘2’
This indicates returning to a file (after having included another file). 
‘3’
This indicates that the following text comes from a system header file, so certain warnings should be suppressed. 
‘4’
This indicates that the following text should be treated as being wrapped in an implicit extern "C" block.

http://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html

忍不住要说一句高手啊。
非常感谢。