-
비주얼 스튜디오에서 [언어 확장] 옵션개발/C·C++ 2019. 8. 16. 16:00
라이브러리를 하나 만들고, 한 프로젝트에서 그 라이브러리를 사용하려고 했다. 라이브러리 자체로 아무 문제가 없었는데, 프로젝트에서 가져다 쓰려니까 별 이상한 오류가 100개 넘게 생겼다. 이유를 하루 넘게 알 수 없었다. 처음에는 컴파일 순서 관련해서, 처음에 생성할 때 미리 컴파일된 헤더 때문인가 싶어 빈 프로젝트로 다시 생성하니까 오류가 안 났다. 몇 번 더 테스트를 하고자 프로젝트를 지우고 새로 만들기를 반복한 결과, 나도 모르게 건드렸던 설정 항목을 발견했다.
[프로젝트 속성 페이지] - [C/C++] - [언어]에 있는 [언어 확장 사용 안 함]이었다. 작년에 C++ 문법 수업을 들을 때 강사가 이 옵션을 사용하게 되면 에러를 발생해야할 문법이 에러처리가 안 난다고 한 말이 머릿속에 남아 가끔씩 생각 날때마다 건드렸던 것이다. 엄격하게 C++의 최신 문법을 준수하고자 할 때는 이 옵션을 켜는 게 맞을 것이다.
언어 확장 사용을 안 하려면 컴파일에서 /Za을 추가하면 되는데, 마이크로소프트 Docs에 따르면 ANSI C89/ISO90에 호환되지 되지 않은 C의 마이크로소프트 확장 문법을 막는다. 그래서 비주얼 스튜디오는 /Za의 사용을 권하지 않는다. 특히 마이크로소프트에서 만든 라이브러리를 사용하는 일이 있을 때는 더더욱 사용해선 안 된다. C++ 프로그래밍을 하더라도 C 시절에 만든, C++에서는 허용하지 않는 C문법이 잔뜩 있는 라이브러리를 사용할 일이 있기 때문이다. 오류를 경험했던 이유도 작성한 라이브러리 안에, 마이크로소프트에서 만든 DB접근 라이브러리인 ADO를 사용한 탓이다.
'개발 > C·C++' 카테고리의 다른 글
간과할 수 있는 문자열 비교 실수 (0) 2019.10.01 pragma once는 만능이 아니다 (0) 2019.09.17 미리 컴파일된 헤더를 쓰면서 생긴 문제 하나 (0) 2019.09.14 미리 컴파일된 헤더 오류 (0) 2019.08.20 이 작업을 수행하기 위해 이 파일과 연결된 앱이 없습니다 (0) 2019.08.20