C/C++ IntelliSense 구성
이 문서는 Visual Studio Code에서 C++ 관련 IntelliSense 제안을 제공하도록 C/C++ 확장을 구성하는 방법에 관한 것입니다. IntelliSense는 VS Code에 내장된 유용한 도구로, 코드 완성, 매개 변수 정보, 구문 강조, 코드 동작(전구) 및 멤버 목록과 같이 코드를 더 빠르고 효율적으로 작성하는 데 도움이 되는 다양한 코드 편집 기능을 제공합니다.
C/C++ IntelliSense는 시스템에 C/C++ 컴파일러가 설치되어 있기만 하면 됩니다. C/C++ 컴파일러는 시스템 포함 경로 위치 및 기타 설정과 같은 C++ 관련 정보를 IntelliSense에 제공합니다. 프로젝트 수준 구성의 경우 프로젝트 수준 IntelliSense 구성 섹션을 참조하세요.
C/C++ 확장이 핵심 IntelliSense 기능을 언제 자동으로 구성해 주나요?
핵심 IntelliSense 기능을 구성하는 데는 컴파일러 하나만 있으면 됩니다. IntelliSense용 컴파일러를 식별하기 위해 C/C++ 확장은 Clang, GCC, MinGW, cygwin, cygwin64 및 MSVC와 같은 컴파일러를 찾기 위해 시스템의 일반적인 경로를 스캔합니다. 이러한 컴파일러 중 하나라도 식별되어 안전한 위치에 있으면 IntelliSense에 대해 자동으로 구성됩니다. 그렇지 않은 경우 이 컴파일러를 IntelliSense에 구성해야 하는지 묻는 알림이 표시됩니다. 두 시나리오 모두 선택한 컴파일러가 기본 컴파일러로 설정됩니다.
IntelliSense가 구성되었는지 확인하는 방법
IntelliSense가 구성되지 않은 경우 C/C++ 확장은 상태 표시줄에 경고 기호가 있는 노란색 표시기를 표시하며, 레이블은 **IntelliSense 구성**입니다.

구성하려면 상태 표시줄 표시기를 선택하면 구성 빠른 선택이 표시됩니다. 빠른 선택을 통해 C/C++ 컴파일러를 선택하거나 설치할 수 있습니다.
상태 표시줄 표시기가 보이지 않으면 프로젝트의 c_cpp_properties.json 파일에서도 확인할 수 있습니다. 이 파일에는 모든 IntelliSense 구성 설정이 저장됩니다. 명령 팔레트(⇧⌘P (Windows, Linux Ctrl+Shift+P))에서 **C/C++: 구성 편집(UI)**을 선택하여 이 파일로 이동합니다. IntelliSense 모드를 확인하여 구성을 찾습니다.

IntelliSense 구성 방법
IntelliSense 구성은 작업 영역에 자동으로 생성되는 c_cpp_properties.json 파일에 저장됩니다. 다음 세 가지 옵션 모두 c_cpp_properties.json 파일을 편집하는 다른 방법입니다.
옵션 1. 구성 빠른 선택을 통해 구성 옵션 선택
명령 팔레트(⇧⌘P (Windows, Linux Ctrl+Shift+P))에서 **IntelliSense 구성 선택**을 입력하여 빠른 선택을 엽니다. 이렇게 하면 C/C++ 확장이 시스템에서 찾은 모든 구성 옵션이 포함된 드롭다운이 표시됩니다.

사용 가능한 옵션 중 하나를 선택합니다. 컴파일러를 선택하면 이 컴파일러가 기본적으로 IntelliSense에서 사용됩니다. IntelliSense를 구성하는 데 사용되는 옵션을 변경하려면 언제든지 **IntelliSense 구성** 빠른 선택으로 돌아갈 수 있습니다.
빠른 선택에서 사용 가능한 옵션이 없으면 시스템에서 컴파일러를 식별할 수 없다는 의미입니다. 수동으로 시스템을 검색하거나 C/C++ 컴파일러를 설치할 수 있습니다. Windows 컴퓨터에 설치하려면 **컴파일러 설치 도움말** 옵션을 선택하면 C/C++ 컴파일러 설치 단계별 안내로 리디렉션됩니다. macOS 또는 Linux 컴퓨터에서는 **컴파일러 설치**를 선택하고 프롬프트를 따라 C++ 컴파일러를 컴퓨터에 설치하세요.
옵션 2. UI를 통해 IntelliSense 구성 편집
명령 팔레트(⇧⌘P (Windows, Linux Ctrl+Shift+P))에서 **C/C++: 구성 편집(UI)**을 선택하여 IntelliSense 구성을 엽니다. 이 보기는 c_cpp_properties.json 파일에 대한 사용자 인터페이스입니다.

**컴파일러 경로** 필드를 프로젝트 빌드에 사용 중인 컴파일러의 전체 경로로 설정합니다. 예를 들어 Linux에서 GCC의 기본 설치 경로를 사용하는 경우 컴파일러 경로는 /usr/bin/gcc입니다. **IntelliSense 모드**를 사용 중인 컴파일러의 아키텍처별 변형으로 설정합니다.
옵션 3. c_cpp_properties.json 파일 직접 편집
c_cpp_properties.json 파일을 직접 편집하여 구성을 사용자 지정할 수 있습니다. 명령 팔레트(⇧⌘P (Windows, Linux Ctrl+Shift+P))에서 **C/C++ 편집 구성(JSON)** 명령을 사용하면 c_cpp_properties.json 파일이 작업 영역의 .vscode 폴더에 생성됩니다.

compilerPath 변수를 사용하여 컴파일러를 추가합니다. 이 변수는 프로젝트를 빌드하는 데 사용되는 컴파일러의 전체 경로입니다. 예를 들어 Linux에서 GCC의 기본 설치 경로를 사용하는 경우 컴파일러 경로는 /usr/bin/gcc입니다.
c_cpp_properties.json 파일에 대한 자세한 내용은 스키마 참조를 검토하세요.
c_cpp_configuration.json 파일의 경우 운영 체제에 따라 아래 샘플을 선택하세요.
> Windows의 샘플 c_cpp_configuration.json
MinGW의 기본 설치 경로 사용
{
"configurations": [
{
"name": "Win32",
"includePath": ["${workspaceFolder}/**"],
"defines": ["_DEBUG", "UNICODE", "_UNICODE"],
"windowsSdkVersion": "10.0.22621.0",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "${default}",
"compilerPath": "C:/msys64/mingw64/bin/gcc.exe"
}
],
"version": 4
}
> macOS의 샘플 c_cpp_configuration.json
Clang의 기본 설치 경로 사용
{
"configurations": [
{
"name": "Mac",
"includePath": ["${workspaceFolder}/**"],
"defines": [],
"macFrameworkPath": [
"/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks"
],
"compilerPath": "/usr/bin/clang",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "macos-clang-arm64"
}
],
"version": 4
}
> Linux의 샘플 c_cpp_configuration.json
GCC의 기본 설치 경로 사용
{
"configurations": [
{
"name": "Linux-GCC",
"includePath": ["${workspaceFolder}/**"],
"defines": [],
"compilerPath": "/usr/bin/g++",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64",
"browse": {
"path": ["${workspaceFolder}"],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 4
}
프로젝트 수준 IntelliSense 구성
컴파일러로 IntelliSense를 구성하면 핵심 IntelliSense 기능을 사용할 수 있습니다. 이 설정을 기본 구성이라고 합니다. 다음과 같은 더 복잡한 사용 시나리오의 경우:
- 하나 이상의 다른 라이브러리에 대한 참조와 같은 추가 포함 경로
- 언어(따라서 IntelliSense)의 동작에 영향을 미치는 특정 컴파일러 인수
IntelliSense를 구성하는 다른 방법이 여러 가지 있습니다. 이러한 추가 구성은 다음을 통해 제공할 수 있습니다.
c_cpp_properties.json파일 및 관련 설정- 다른 VS Code 확장 형태의 사용자 지정 구성 공급자(예: Makefile Tools 또는 CMake Tools 확장)
compile_commands.json파일
구성 공급자
사용자 지정 구성 공급자는 C/C++ 확장보다 더 정확한 C++ IntelliSense 구성을 제공할 수 있는 VS Code의 또 다른 확장입니다. 예를 들어 CMake 또는 Make 빌드 시스템의 경우 Makefile Tools 또는 CMake Tools 확장이 구성 공급자가 될 수 있습니다. 확장을 구성 공급자로 추가하려면 구성 빠른 선택을 통해 확장을 선택하거나, **고급 설정** 아래의 **구성 공급자** 필드를 편집하여 구성 UI에 추가하거나, c_cpp_properties.json 파일에 configurationProvider 필드를 추가합니다. 예를 들어 CMake 확장의 경우 추가 경로는 ms-vscode.cmake-tools입니다.

C/C++ 확장은 사용자 지정 구성 공급자를 찾기 위해 시스템을 스캔합니다. 사용자 지정 구성 공급자가 하나만 식별되면 이 구성 공급자가 IntelliSense에 대해 자동으로 구성됩니다. 여러 구성 공급자가 식별되면 구성 빠른 선택을 열어 확장할 것을 선택해야 합니다.
compile_commands.json 파일
IntelliSense 구성을 제공하는 또 다른 옵션은 프로젝트의 모든 파일에 사용되는 정확한 컴파일 명령을 설명하는 compile_commands.json 파일입니다. 이 파일은 종종 CMake 또는 Bazel과 같은 빌드 시스템에서 프로젝트를 구성할 때 명령줄 인수를 설정하여 생성됩니다. compile_commands.json 파일은 구성 빠른 선택, UI를 통한 구성 편집 또는 c_cpp_properties.json 파일 직접 편집과 같은 IntelliSense 구성 방법 섹션에서 설명한 것과 동일한 방법으로 구성을 선택할 수 있습니다. 구성 UI에서 파일은 **고급 구성** 및 **컴파일 명령** 필드 아래에 추가할 수 있습니다. 예를 들어 compile_commands.json 파일이 작업 영역 루트에 있는 경우 **컴파일 명령** 필드에 ${workspaceFolder}/compile_commands.json을 입력합니다. 그렇지 않은 경우 c_cpp_properties.json 파일에 compileCommands 구성 속성을 사용하여 직접 추가할 수 있습니다.
컴파일 명령 데이터베이스에 편집기에서 연 파일에 해당하는 변환 단위에 대한 항목이 포함되어 있지 않은 경우, 대신 기본 구성(c_cpp_properties.json에서 찾을 수 있음)이 사용됩니다(예: includePath 및 defines). C/C++ 확장이 기본 구성으로 돌아가는 경우, 언어 상태 표시줄 표시기는 상태 표시줄에 **IntelliSense 구성** 레이블을 표시합니다.
사용자 지정 구성 공급자와 compile_commands.json 파일을 지정한 경우, IntelliSense 구성을 위해 사용자 지정 구성 공급자가 먼저 쿼리됩니다.
프로그램이 작업 영역에 없거나 표준 라이브러리 경로에 없는 헤더 파일을 포함하는 경우 **포함 경로**를 수정할 수 있습니다. C/C++ 확장은 **컴파일러 경로**에서 지정한 컴파일러를 쿼리하여 포함 경로를 채웁니다. 확장에서 대상 시스템 라이브러리의 경로를 찾을 수 없으면 포함 경로를 수동으로 입력할 수 있습니다.
언어 상태 표시줄을 사용하여 IntelliSense 활동 확인
언어 상태 표시줄을 사용하여 IntelliSense가 현재 파일에서 활발하게 작동하는지 확인할 수 있습니다. 언어 상태 표시줄을 호출하려면 C++ 파일을 엽니다. 상태 표시줄에는 **{} C++** 텍스트가 표시됩니다. **{}** 기호 위에 마우스를 올리면 언어 상태 표시줄 플라이아웃이 열립니다. 플라이아웃의 가장 위 항목은 IntelliSense 상태를 나타냅니다. 다음은 다양한 상태와 해당 의미입니다.
- IntelliSense: 준비됨 = IntelliSense가 C/C++ 확장에 대해 구성되었으며 코드를 작성하는 등 편집기와 상호 작용할 때 자동으로 활성화됩니다.
- IntelliSense: 업데이트 중 = IntelliSense가 코드 변경 사항을 기반으로 코드 완성, 구문 강조 등을 결정하기 위해 활발하게 작업 중입니다.

언어 상태 표시줄 플라이아웃의 항목 오른쪽에 있는 핀 아이콘을 선택하여 상태 표시줄에 영구적으로 고정할 수 있습니다.
다음 단계
- IntelliSense 구성에 대한 자세한 내용은 기본 설정 사용자 지정을 참조하세요.
- 설정 구성에 문제가 있는 경우 GitHub 토론에서 토론을 시작하거나 수정해야 할 문제가 발견되면 GitHub 이슈에 보고해 주세요.
- c_cpp_properties 스키마를 탐색하세요.
- C++ 확장 개요를 검토합니다.