出於好奇,我想知道C++字符串文字的真正底層類型是什麼。C++字符串文字的類型
根據我觀察到的情況,我得到了不同的結果。
一個typeid的測試類似如下:
std::cout << typeid("test").name() << std::endl;
顯示我char const[5]
。
嘗試指派一個字串不兼容的類型,像這樣(見給定的錯誤):
wchar_t* s = "hello";
我得到a value of type "const char *" cannot be used to initialize an entity of type "wchar_t *"
從VS12的智能感知。
,但我看不出它如何能const char *
爲以下行由VS12接受:
char* s = "Hello";
我已閱讀,這是在預C++ 11個標準允許的,因爲它是與C兼容,但修改s
會導致未定義的行爲。我認爲這只是VS12還沒有實現所有的C++ 11標準,並且這條線通常會導致錯誤。
讀C99標準(from here,6.4.5.5)表明它應該是一個數組:
的多字節字符 序列然後用於初始化靜態存儲持續時間和長度的數組只是 足以包含序列。
那麼,什麼是C++字符串文字下的類型?
非常感謝您寶貴的時間。
VS12講的是一些與C++類似但不相同的奇怪方言。 –