澄清:鑑於文字的字符串可以被(見下文)重寫爲const char[]
,強加文字較低的最高長度比 char[]
s是隻是一個句法不便。爲什麼C標準 鼓勵這個?爲什麼C字符串的最大長度與max char []不同?
的C89標準對字符串字面翻譯的限制:在一個字符串
509個字符的文字或寬字符串文字(後串聯)
沒有一個字符數組的限制;也許
32767字節的對象(僅在託管環境)
適用(我不知道是什麼意思的對象或託管環境中),但無論如何這是一個更高的極限。
我的理解是,一個字符串文字相當於包含字符的字符數組,即:它總是能夠改寫這樣的事情:
const char* str = "foo";
這個
static const char __THE_LITERAL[] = { 'f', 'o', 'o', '\0' };
const char* str = __THE_LITERAL;
那麼,爲什麼這樣的硬性文字限制?
很奇怪他們選擇了509而不是65533或253. – 2012-07-15 01:14:37
您可能希望閱讀這篇文章:http://msdn.microsoft.com/en-us/library/sx08afx2.aspx – 2012-07-15 01:19:22
程序限制*源*與編譯程序的限制無關。 – 2012-07-15 01:25:41