2017-11-15 7 views

답변

1

이들은 서로 관련되어 있지만 동일한 것은 아닙니다.

-Wall --pedantic 플래그와 함께 컴파일, 할당 :

int i = 'abc'; 

는 생산 :

경고 : GCC와 꽝 모두 멀티 문자 문자 상수 [-Wmultichar]

, while :

int i = 'abcd'; 

는 생산 :

GCC 경고 : 다중 문자 문자 상수 -Wmultichar]

꽝 경고 : 다중 문자 문자 상수 -Wfour-숯불 상수]


표준 (corrigenda TC1, TC2 및 TC3이 포함 된 C99 표준, 하위 섹션 6.4.4.4 - 문자 상수)은 다음과 같이 명시합니다.

두 개 이상의 문자 (예 : 'ab'), [...]가 포함 된 정수 문자 상수의 값은 구현에 따라 정의됩니다.

멀티 문자는 항상 문자가 하나 int로 포장되는 순서가 멀티 문자 상수의 휴대 사용이 어렵다 지정되지 않기 때문에, int로 확인하지만, (정확한 값은 구현 -이다 종속).

또한 컴파일러는 불완전한 다중 문자 (예 : 'abc')를 처리하는 방법이 다릅니다.

일부 컴파일러는 엔디안 유형에 관계없이 왼쪽에 있고 일부는 오른쪽에 있습니다 (일부 컴파일러는 전혀 패딩되지 않을 수도 있음).

완전한 멀티 문자의 이식성 문제를 수용 할 수있는 사람은 불완전한 것 (-Wmultichar -Wno-four-char-constants)에 대한 경고를 원할 수 있습니다.