어쩌면 나는이 행성에서 왔지만 다음과 같은 구문 오류가 있어야합니다.
int a[] = {1,2,}; //extra comma in the end
그러나 그렇지 않습니다. 나는이 코드는 비주얼 스튜디오에서 컴파일 할 때 놀랐습니다,하지만 난 표준을 확인하고 그것이 지금까지 C ++ 규칙에 관한 한, 그래서 같이 MSVC 컴파일러를 신뢰하지 배운 되는 표준에 의해 허용뿐만 아니라. 나를 믿지 않으면 문법 규칙에 8.5.1을 볼 수 있습니다.
이것이 왜 허용됩니까? 이것은 어리석은 쓸모없는 질문 일지 모르지만 왜 내가 묻는 지 이해하고 싶습니다. 그것이 일반적인 문법 규칙의 하위 사례라면 이해할 것입니다. 초기화 목록 끝에서 중복 쉼표를 허용하지 않기 위해 일반적인 문법을 더 어렵게하지 않기로 결정했습니다. 그러나 추가 쉼표는 명시 적으로 허용됩니다. 예를 들면, (함수 취하는 함수 호출 인수리스트의 끝에서 중복 쉼표가 허용되지 않는 ...
) 정상 .
이 중복 쉼표가 명시 적으로 허용되는 특별한 이유가 있습니까?
for()
예 : 이후 ) 추가하면 컴파일러 경고가 발생합니다.
if (x = 1)
문법에서는 모호하지 않지만 인간에게는 매우 모호하므로 경고가 표시됩니다.
if
예제도 모호하지 않습니다. 나는 "모호한"것이 당신이 생각하는 것을 의미한다고 생각하지 않습니다!
;
다음 토큰이 분명 할 때 누락을 무시하지 않는 이유는 무엇입니까 ?