澄清:鉴于字符串文字可以重写为 a const
char[]
(见下文),对文字施加比对
char[]
s 更低的最大长度只是语法上的不便。为什么 C 标准鼓励这样做?
C89 标准对字符串文字有翻译限制:
字符串文字或宽字符串文字中的 509 个字符(连接后)
char 数组没有限制;也许
对象中的 32767 字节(仅在托管环境中)
适用(我不确定对象或托管环境的含义),但无论如何它是一个更高的限制。
我的理解是字符串文字相当于包含字符的 char 数组,即:总是可以重写如下内容:
const char* str = "foo";
进入这个
static const char __THE_LITERAL[] = { 'f', 'o', 'o', '\0' };
const char* str = __THE_LITERAL;
那么为什么对文字有如此严格的限制呢?