![]() |
1
9
有点--预处理器工作的一部分 是 删除注释。在这种情况下,您不关心注释中是否有该指令;它仍然像任何其他注释一样被删除。 |
![]() |
2
10
根据C标准,在程序的翻译(编译)过程中有8个翻译阶段。在翻译阶段3中,每个注释都被一个空白字符替换,而预处理指令在阶段4中执行。 |
![]() |
3
7
是的,预处理器在处理指令之前替换注释。 根据C99标准第5.1.1.2节(翻译阶段):
|
![]() |
4
4
是的,从语言标准的角度来看,处理注释(替换为空格) 之前 预处理器开始工作。 在实际的实现中,注释的处理可以由处理预处理器指令并执行宏替换的相同代码(例如相同的可执行文件)完成,但结果必须相同:注释对预处理器没有适当的影响。 在旧的和/或非标准代码中,有时可能会看到一些依赖于非标准行为的技巧,这些行为涉及实现特定的注释与预处理器关系,例如,使用预处理器指令创建注释。
或者使用注释进行预处理器级连接(使用不支持的C编译器)
这些技巧在标准C中都不是合法的,它们都不起作用。 |
![]() |
6
2
是的(在每个健全的宇宙中)。 |
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 6 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 6 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 6 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 6 月前 |