호기심에서 벗어나 C++ 문자열 리터럴의 실제 기본 유형이 무엇인지 궁금합니다.C++ 문자열 리터럴 유형
내가 관찰 한 내용에 따라 결과가 달라집니다. 다음과 같은
유형 ID 시험 :
std::cout << typeid("test").name() << std::endl;
나를 char const[5]
을 보여줍니다. 그래서 (주어진 오류를보고)처럼 호환되지 않는 유형의 문자열 리터럴을 할당하려고
:
wchar_t* s = "hello";
나는 VS12의 인텔리에서 a value of type "const char *" cannot be used to initialize an entity of type "wchar_t *"
를 얻을.
하지만 다음 줄이 VS12에 의해 허용되는대로 const char *
을 할 수 표시되지 않습니다 : 나는 그것을 위해이었다로이 전 C++ 11 개 표준에서 허용 된 것을 읽고
char* s = "Hello";
s
을 수정해도 정의되지 않은 동작이 발생하지만 C와의 호환성은 유지됩니다. 이 VS12는 아직 C++ 11 표준을 모두 구현하지 않았으며이 줄은 일반적으로 오류가 발생한다고 가정합니다.
C99 표준 (from here, 6.4.5.5)를 읽기
는 배열되어야한다고 제안한다 : 멀티 바이트 시퀀스는 다음 정적 저장 기간과 길이 배열을 초기화하는 데 사용되는단지 시퀀스를 포함하는 것이 좋습니다.
그래서 C++ 문자열 리터럴 아래에 어떤 문자가 있습니까?
감사합니다.
VS12는 C++과 비슷하지만 동일하지 않은 이상한 언어를 사용합니다. –