가장 짜증나는 구문 분석 예외 이해
C에서 논란의 여지가 있는 MVP(Most Vexing Parse) 규칙은 특정 구문 모호성이 항상 발생함을 나타냅니다. 대부분의 프로그래머가 다르게 기대함에도 불구하고 함수 선언으로 해석됩니다. 이 예외는 다음 구문에서 발생합니다.
A a( A() );
모호성 해결
이 코드는 두 가지 방법으로 구문 분석할 수 있습니다.
MVP 규칙에 따르면 대부분의 프로그래머가 기대함에도 불구하고 코드는 두 번째 옵션으로 해석되어야 합니다.
표준의 이론적 근거
MVP 규칙은 일관성을 유지하기 위해 도입되었습니다. C 의미론. 이것이 없으면 동일한 구문이 상황에 따라 변수 정의나 함수 선언으로 해석될 수 있습니다. 이렇게 하면 모호성이 발생하고 코드 가독성이 떨어집니다.
다음 예를 고려하세요.
A foo;
이 줄은 분명히 변수 정의입니다. 그러나 MVP가 존재하지 않으면 다음 줄은 모호합니다.
A foo();
빈 괄호가 있는 변수 정의 또는 함수 선언으로 해석될 수 있습니다. MVP 규칙을 적용하면 이러한 모호성이 제거됩니다.
결론
MVP 규칙은 항상 모호한 코드를 함수 선언으로 해석하여 C 구문의 일관성을 강화합니다. 이 선택은 일부 프로그래머에게는 직관에 반하는 것처럼 보일 수 있지만 명확하고 모호하지 않은 구문 분석 메커니즘을 제공하여 오류 가능성을 줄이고 코드 가독성을 향상시킵니다.
위 내용은 C의 가장 까다로운 구문 분석은 왜 항상 `A a(A());`를 함수 선언으로 해석합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!