저도 예전엔 자주 유발했던 부분입니다. 클래스 생성 후 맨 뒤에 세미콜론 빼먹어서 오류가 발생하는 문제였었죠. 비주얼스튜디오 버전이 올라가며 이런 문제에서 자유로워질 줄 알았는데, 어쩔 수 없이 2010, 2008 등을 사용할 때엔 비슷한 문제를 또 유발하네요;;;;
예를 들어 이런 상황입니다.
1 2 3 | #include "myClass.h" ; using namespace std; | cs |
2번 라인 ; 세미콜론이 있으면 컴파일 에러가 발생하지 않는데, 세미콜론을 빼면 컴파일 에러가 발생합니다.
c++ 기본 syntax 따르자면 세미콜론이 있으면 안 됩니다. 근데, 왜 세미콜론이 있어야 정상, 없으면 오류일까요?
정답은 클래스 선언에 있습니다. 아래 예시를 보시죠.
1 2 3 4 5 6 7 | class myClass { public: blabla... private: blabla... }; | cs |
7번 라인에 클래스 선언 종료와 함께 세미콜론이 붙어 있습니다. 여기서 세미콜론이 빠지면 위와 같은 비정상적인 신텍스 에러가 발생하는 겁니다.
error C2143: 구문 오류 : ';'이(가) 'using' 앞에 없습니다.
낮은 버전 비주얼스튜디오에서 이 부분을 에러로 인식하지 못합니다. 그리고 리눅스 환경에서도 발생하고요. 또한, Qt Creator, Qt에서도 발생하는 에러입니다.
세미콜론 때문에 고민이라면 클래스 선언부를 먼저 살펴봐야겠습니다.
ⓒ written by vicddory