C预处理器:#include指令实参不得以数字开头的设计依据及相关疑问
N2479 C17至C2x工作草案(2020年2月5日版)—— ISO/IEC 9899:202x(E)
6.10.2 源文件包含
实现应为以下序列提供唯一映射:由一个或多个非数字或数字(见6.4.2.1节)、后跟一个句点(
.)、再后跟一个非数字组成的序列。该序列的首字符不得为数字。
相关技术问询
- 核心疑问:在C预处理器规范中,为何要求满足唯一映射规则的
char-sequence(即#include指令的实参)不能以数字开头?该设计规则的依据是什么? - 附加疑问:当开发者写出不符合上述要求的代码时(例如
#include "1.h"),多数编译器不会生成任何诊断消息,背后的原因是什么? - 补充说明:后续经同事解答,
The first character shall not be a digit(首字符不得为数字)的要求仅与前述的unique mappings(唯一映射)规定绑定,此前对该标准条款的解读存在偏差。
内容的提问来源于stack exchange,提问作者pmor
相关产品推荐
相关产品推荐

