다음을 통해 공유


IntelliSense에 대한 C++ 프로젝트 구성

경우에 따라 IntelliSense가 제대로 작동하도록 C++ 프로젝트를 수동으로 구성해야 할 수 있습니다. MSBuild 프로젝트(파일 기반 .vcxproj )의 경우 프로젝트 속성에서 설정을 조정할 수 있습니다. MSBuild가 아닌 프로젝트의 경우 프로젝트의 루트 디렉터리에 있는 파일의 설정을 CppProperties.json 조정합니다. 경우에 따라 IntelliSense에서 매크로 정의를 이해하는 데 도움이 되는 힌트 파일을 만들어야 할 수 있습니다. Visual Studio IDE를 사용하면 IntelliSense 문제를 식별하고 해결할 수 있습니다.

단일 파일 IntelliSense

프로젝트에 포함되지 않은 파일을 열면 Visual Studio에서 일부 IntelliSense 지원을 제공하지만 기본적으로 오류 물결선이 표시되지 않습니다. 탐색 모음기타 파일이 표시되면 잘못된 코드에서 오류 물결선이 표시되지 않는 이유 또는 전처리기 매크로가 정의되지 않은 이유를 설명할 수 있습니다.

오류 목록 확인

파일이 단일 파일 모드로 열려 있지 않고 IntelliSense가 제대로 작동하지 않는 경우 먼저 오류 목록 창이 확인됩니다. 현재 원본 파일에 대한 모든 IntelliSense 오류를 포함된 모든 헤더 파일과 함께 보려면 드롭다운에서 Build + IntelliSense 선택합니다.

오류 목록 창의 스크린샷. 필터 드롭다운에서 빌드 + IntelliSense가 선택됩니다.

IntelliSense는 최대 1,000개의 오류를 생성합니다. 원본 파일에 포함된 헤더 파일에 1,000개 이상의 오류가 있는 경우 원본 파일은 원본 파일의 시작 부분에 단일 오류 물결선만 표시합니다.

#include 경로가 올바른지 확인

MSBuild 프로젝트

Visual Studio IDE 외부에서 빌드를 실행하고 빌드가 성공하지만 IntelliSense가 올바르지 않은 경우 명령줄이 하나 이상의 구성에 대한 프로젝트 설정과 동기화되지 않을 수 있습니다. 솔루션 탐색기 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 모든 #include 경로가 현재 구성 및 플랫폼에 대해 올바른지 확인합니다. 모든 구성 및 플랫폼에서 경로가 동일한 경우 모든 구성 선택하고 모든 플랫폼 경로가 올바른지 확인할 수 있습니다.

구성 속성 섹션의 디렉터리 포함 설정을 보여 주는 스크린샷

VC_IncludePath 같은 빌드 매크로의 현재 값을 보려면 디렉터리 포함 드롭다운을 선택합니다. 그런 다음 편집>을 선택하고<매크로 단추를 선택합니다.

메이크파일 프로젝트

NMake 프로젝트 템플릿을 기반으로 하는 메이크파일 프로젝트의 경우 구성 속성에서 NMake를 선택한 다음 IntelliSense 범주에서 검색 경로 포함을 선택합니다.

구성 속성 > N Make > 포함 검색 경로 설정을 보여주는 스크린샷

CMake 프로젝트

CMake 프로젝트의 경우 #include 경로가 모든 구성에 대해 올바르게 지정되었는지 확인합니다 CMakeLists.txt. 다른 프로젝트 형식에는 CppProperties.json 파일이 필요할 수 있습니다. 자세한 내용은 CppProperties.json사용하여 코드 탐색 구성 을 참조하세요. 파일에 정의된 각 구성에 대해 경로가 올바른지 확인합니다.

파일에 구문 오류가 CppProperties.json 있으면 영향을 받는 파일의 IntelliSense가 올바르지 않습니다. Visual Studio는 출력 창에 오류를 표시합니다.

태그 파서 문제

태그 파서는 탐색 및 내비게이션에 사용되는 퍼지 C++ 파서입니다. 빠르지만 모든 코드 구문을 완전히 이해하려고 시도하지는 않습니다.

예를 들어 전처리기 매크로를 평가하지 않으므로 이를 많이 사용하는 코드를 잘못 구문 분석할 수 있습니다. 태그 파서가 익숙하지 않은 코드 구문을 발견하면 코드의 전체 영역을 건너뛸 수 있습니다.

Visual Studio에서 이 문제가 매니페스트되는 두 가지 일반적인 방법이 있습니다.

  1. IDE는 이미 정의된 함수에 대한 함수 정의를 만들도록 제안합니다.

  2. 탐색 모음에 가장 안쪽 매크로가 표시되면 현재 함수 정의를 건너뛰게 됩니다.

    함수 정의를 건너뛰는 태그 파서 스크린샷

    코드 조각은 함수 주 내에서 사용되는 do_if 대한 매크로 정의를 보여줍니다. 태그 파서는 매크로를 이해하지 못하므로 현재 함수의 이름이 주 함수임을 보여 주는 탐색 드롭다운 대신 매크로 이름인 do_if 표시됩니다.

이러한 종류의 문제를 해결하려면 솔루션 디렉터리의 루트에 명명된 cpp.hint 파일을 추가합니다. 자세한 내용은 힌트 파일참조하세요.

태그 파서 오류가 오류 목록 창에 나타납니다.

진단 로깅을 사용하여 프로젝트 설정 유효성 검사

IntelliSense 컴파일러가 경로 포함 및 전처리기 매크로를 포함하여 올바른 컴파일러 옵션을 사용하고 있는지 확인하려면 도구 > 옵션 > 텍스트 편집 > 기 C/C++ > 고급 > 진단 로깅에서 IntelliSense 명령줄의 진단 로깅을 켭니다. 로깅 활성화을 True로 설정하고, 로깅 수준을 5로 설정 (가장 상세하게), 그리고 로깅 필터를 8로 설정 (IntelliSense 로깅)합니다.

이제 출력 창에 IntelliSense 컴파일러에 전달되는 명령줄이 표시됩니다. 샘플 출력은 다음과 같습니다.

[IntelliSense] Configuration Name: Debug|Win32
[IntelliSense] Toolset IntelliSense Identifier:
[IntelliSense] command line options:
/c
/I.
/IC:\Repo\Includes
/DWIN32
/DDEBUG
/D_DEBUG
/Zc:wchar_t-
/Zc:forScope
/Yustdafx.h

이 정보는 IntelliSense가 부정확한 정보를 제공하는 이유를 이해하는 데 도움이 될 수 있습니다. 예를 들어 프로젝트의 Include 디렉터리에 $(MyVariable)\Include이 포함되어 있고, 로그에서 /I\Include이 Include 경로로 표시되는 경우, 이는 $(MyVariable)가 평가되지 않았음을 의미하며 최종 Include 경로에서 $(MyVariable)가 제거되었다는 것을 의미합니다.

IntelliSense 빌드 정보

Visual Studio는 전용 C++ 컴파일러를 사용하여 모든 IntelliSense 기능을 지원하는 데이터베이스를 만들고 유지 관리합니다. IntelliSense 데이터베이스를 코드와 동기화된 상태로 유지하기 위해 Visual Studio는 프로젝트 설정 또는 원본 파일의 특정 변경 내용에 따라 IntelliSense 전용 빌드를 백그라운드 작업으로 자동으로 시작합니다.

그러나 경우에 따라 Visual Studio는 적시에 IntelliSense 데이터베이스를 업데이트하지 않을 수 있습니다. 예를 들어 git pull 또는 git checkout 명령을 실행할 때 Visual Studio는 파일의 변경 내용을 검색하는 데 최대 1시간이 걸릴 수 있습니다. 솔루션 탐색기 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 솔루션 다시 검사할선택하여 솔루션의 모든 파일을 강제로 다시 검사할 수 있습니다.

IntelliSense 빌드 오류 문제 해결

IntelliSense 빌드는 이진 파일을 생성하지 않지만 여전히 실패할 수 있습니다. 오류의 한 가지 가능한 원인은 사용자 지정 .props 또는 .targets 파일입니다. Visual Studio 2017 버전 15.6 이상에서는 IntelliSense 전용 빌드 오류가 출력 창에 기록됩니다. 이를 보려면 의 출력을에서 의 솔루션으로 설정합니다.

출력 창을 보여 주는 스크린샷. 드롭다운의 출력 표시가 솔루션으로 설정됩니다.

오류 메시지는 디자인 타임 추적을 사용하도록 지시할 수 있습니다.

error: Designtime build failed for project 'E:\src\MyProject\MyProject.vcxproj',
configuration 'Debug|x64'. IntelliSense might be unavailable.
Set environment variable TRACEDESIGNTIME=true and restart
Visual Studio to investigate.

환경 변수 TRACEDESIGNTIME 를 true로 설정하고 Visual Studio를 다시 시작하면 빌드 실패를 진단하는 데 도움이 될 수 있는 로그 파일이 %TEMP% 디렉터리에 표시됩니다.

환경 변수에 대한 TRACEDESIGNTIME 자세한 내용은 Roslyn디자인 타임 빌드를 참조하세요. 이러한 문서의 정보는 C++ 프로젝트와 관련이 있습니다.