最近的 C 标准规定对于printf("%s",p)
:
如果不存在l长度修饰符,则参数应为指向字符类型数组的初始元素的指针
这是否意味着p
必须与 兼容char *
,还是应该以更宽松的方式解释这句话?标准的其他部分是否阐明了“字符类型数组”的确切含义?
为什么这很重要:如果该短语被严格解释为p
必须与 兼容的含义char *
,一个重要的结果是在已签名unsigned char *p; … printf("%s", p);
的编译平台上未定义,并且未定义。char
const char *p; … printf("%s", p);