17.8 Preview 1부터 Visual Studio에서는 다음과 같은 방식으로 C 및 C++ 코드의 품질을 향상시키기 위해 #include 파일을 정리할 수 있습니다.
- 필요한 헤더 파일이 다른 헤더 파일을 통해 간접적으로 포함되어 있어서 컴파일되는 코드에 대해 해당 헤더 파일을 추가하도록 제안합니다.
- 사용되지 않는 헤더 파일을 제거하여 빌드 시간을 개선합니다.
이 문서에서는 Visual Studio에서 Include Cleanup을 구성하는 방법을 설명합니다. 정리 포함에 대한 자세한 내용은 C/C++ 정리 포함 개요를 참조하세요.
정리 포함 설정
Include Cleanup 기능은 기본적으로 꺼져 있습니다.
도구>옵션>텍스트 편집기>C/C++>코드 정리를 선택하고 #include 정리 사용을 선택하여 설정합니다.
그런 다음 드롭다운을 사용하여 간접 헤더를 추가하거나 사용하지 않는 헤더를 제거할 수 있는 기회에 대한 알림의 심각도를 구성합니다.
**#include 정리 사용** 확인란이 선택되어 있습니다. **사용되지 않는 include 제거 제안 수준**과 **누락된 include 추가 제안 수준** 드롭다운이 표시됩니다. 드롭다운 내용이 표시됩니다. **리팩터링만**, **제안**, **경고**, **오류**입니다. **사용되지 않는 제거에는 제안 수준** 드롭다운이 동일한 옵션을 제공하지만 **Dimmed**도 추가합니다.
이러한 옵션은 [정리 포함] 기능이 사용하지 않는 헤더에 대해 제공하는 알림 종류를 제어합니다.
어둡게
Include Cleanup은 코드 편집기에서 사용되지 않는 헤더 파일이 있는 줄을 흐리게 표시하고 오류 목록 창에 메시지를 표시하여 사용되지 않는 헤더를 보여 줍니다. 코드 편집기에서 커서를 흐리게 #include 표시하여 빠른 작업 메뉴를 표시하고 잠재적 수정 사항 표시를 선택하거나 전구 드롭다운을 클릭하여 사용되지 않는 파일과 관련된 작업을 확인합니다.
iostream을 사용하는 코드 줄이 주석 처리되므로 #include < iostream > 줄이 흐리게 표시됩니다. 코드 줄은 // std::cout << "charSize = " << charSize; 이 줄에는 빠른 작업 메뉴도 표시됩니다. 이 파일에는 #include < iostream > 사용되지 않으며 잠재적인 수정 사항 표시 링크가 있습니다.
리팩터링 전용: Include Cleanup은 #include 위에 마우스 포인터를 올리거나 #include 줄에 커서를 놓고 Ctrl+마침표를 누르면 코드 편집기의 빠른 작업 메뉴를 통해 수행할 수 있는 작업을 제공합니다.
#include iostream 위에 커서를 놓으면 # include iostream이 이 파일에 사용되지 않는 텍스트와 함께 전구가 나타납니다."
제안, 경고, 오류: Include Cleanup은 오류 목록 창에 Include Cleanup 메시지를 제안, 경고 또는 오류로 표시할 수 있습니다. 어느 것을 결정할지 정합니다. 다음 오류 목록 스크린샷에서 Include Cleanup은 사용하지 않는 헤더를 경고로 표시하도록 구성되어 있습니다. 정리 포함 출력을 볼 수 있도록 드롭다운 필터에서 Build + Intellisense가 선택되어 있는지 확인합니다.
드롭다운 필터가 **빌드 + IntelliSense**로 설정됩니다. 경고가 표시됩니다. VCIC002 - '#include
도구>옵션>모든 설정>언어>C/C++>코드 정리>포함 정리를 선택하여 설정합니다. 드롭다운을 사용하여 사용하지 #include 않는 문을 강조 표시할 수 있는 기회, #include 최적화할 수 있는 문(필요한 전이적 포함이 직접 추가된 후 제거됨) 및 전이적으로 포함된 누락된 #include 문에 대한 알림을 받을 방법을 구성합니다.
코드 편집기에서 사용하지 않는 헤더, 최적화할 수 있는 헤더 및 전이적으로 포함된 헤더를 강조 표시하는 방법을 선택하는 드롭다운을 보여 주는 스크린샷
옵션의 의미:
흐리게 표시됨
Include Cleanup은 코드 편집기에서 사용되지 않는 헤더 파일이 있는 줄을 흐리게 표시하고 오류 목록 창에 메시지를 표시하여 사용되지 않는 헤더를 보여 줍니다. 코드 편집기에서 커서를 흐리게 #include 표시하여 빠른 작업 메뉴를 표시하고 잠재적 수정 사항 표시를 선택하거나 전구 드롭다운을 클릭하여 사용되지 않는 파일과 관련된 작업을 확인합니다.
'iostream'을 사용하는 코드 줄이 주석 처리되므로 '#include
없음: 아무 작업도 수행하지 않습니다. Include Cleanup은 #include 위에 마우스 포인터를 올리거나 #include 줄에 커서를 놓고 Ctrl+마침표(.)를 누르면, 빠른 작업 메뉴를 통해 코드 편집기에서 수행할 수 있는 작업을 계속 제공합니다.
제안, 경고, 오류: Include Cleanup은 오류 목록 창에 Include Cleanup 메시지를 제안, 경고 또는 오류로 표시할 수 있습니다. 어느 것을 결정할지는 사용자가 정합니다. 다음 오류 목록 스크린샷에서 Include Cleanup은 사용하지 않는 헤더를 경고로 표시하도록 구성되어 있습니다. 정리 포함 출력을 볼 수 있도록 드롭다운 필터에서 Build + Intellisense가 선택되어 있는지 확인합니다.
드롭다운 필터가 **빌드 + IntelliSense**로 설정됩니다. 경고가 표시됩니다. VCIC002 - '#include
그 밖의 구성 옵션
추가 포함 정리 설정은 도구>옵션>텍스트 편집기>C/C++>코드 정리에서 사용할 수 있습니다.
-
정렬에는 정렬이 필요한 플래그
#include지시문이 포함됩니다. 오류 목록 창에 표시되는 메시지의 심각도 알림 수준을 선택합니다. 없음(기능이 꺼져 있음), 제안, 경고 또는 오류입니다. -
스타일: 문 정렬 방법을
#include제어합니다. 괄호 스타일을 고려하지 않고 정렬하려면 무시를 선택하고, 따옴표 include 문을 꺾쇠 괄호 include 문보다 먼저 정렬하려면 따옴표를, 꺾쇠 괄호 include 문을 따옴표 include 문보다 먼저 정렬하려면 꺾쇠 괄호를 선택합니다. - 대/소문자 구분: 선택하면 정렬 시 파일 이름을 대/소문자를 구분하여 비교합니다. 해제하면 정렬 시 대/소문자를 구분하지 않습니다.
추가 포함 정리 설정은 도구>옵션>모든 설정>언어>C/C++>코드 정리>포함 정리에서 사용할 수 있습니다.
- 고급 필터링: 선택한 경우 파생 클래스 개체에서 멤버 함수를 호출하지만 함수가 기본 클래스에 정의된 경우 도구는 기본 클래스 헤더를 추가하는 것을 제안하지 않습니다. 사용하는 기호가 직접 참조하는 형식이 아닌 기본 클래스에서 오는 경우 시끄러운 제안을 줄이려면 이 옵션을 켭니다.
- Include 정리 관련 편집을 수행한 후 #include 지시문 정렬: 선택하면 기본 제공 포함 정렬 기능이 Include 정리 작업 후에 실행됩니다.
- include 정리를 위해 편집한 후 #include 지시문의 서식을 지정합니다: 선택하면 Include Cleanup 작업 후에 서식 명령이 실행됩니다.
.editorconfig로 포함 정리 구성
정리 포함 기능에는 정리 제안에서 지정된 포함을 제외하고 도구에서 사용하지 않는 것으로 표시하지 않도록 일부 헤더 파일이 필요함을 나타내는 등 더 많은 옵션이 있습니다. 파일에서 이러한 옵션을 정의합니다 .editorconfig . 이 파일을 프로젝트에 추가하여 코드베이스에서 작동하는 모든 사용자에게 일관된 코딩 스타일을 적용합니다. 프로젝트에 파일을 추가하는 .editorconfig 방법에 대한 자세한 내용은 EditorConfig를 사용하여 이식 가능한 사용자 지정 편집기 설정 만들기를 참조하세요.
Include Cleanup과 함께 사용할 수 있는 설정은 .editorconfig 다음과 같습니다.
| 설정 | 값 | 예시 |
|---|---|---|
cpp_include_cleanup_add_missing_error_tag_type
전이적 포함 메시지를 추가하기 위한 오류 수준을 설정합니다. |
nonesuggestionwarningerror |
cpp_include_cleanup_add_missing_error_tag_type = suggestion |
cpp_include_cleanup_alternate_files
간접 포함에 대한 메시지를 표시하지 않습니다. 예를 들어, #include <windows.h> 하고 그것에 의해 간접적으로 포함된 헤더 winerror.h 또는 minwindef.h의 콘텐츠만 사용하는 경우, 도구는 해당 헤더를 추가하라고 제안하지 않습니다. |
file1:file2[:file3...][,file4:file5...] |
cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h
또는 cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h |
cpp_include_cleanup_excluded_files
정리 메시지 포함에서 지정된 파일을 제외합니다. 헤더를 추가할지 아니면 사용하지 않는지 여부에 관계없이 헤더와 관련된 제안이 전혀 표시되지 않습니다. |
filename | cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h |
cpp_include_cleanup_remove_unused_error_tag_type
사용되지 않는 포함 메시지를 제거하기 위한 오류 수준을 설정합니다. |
nonesuggestionwarningerrordimmed |
cpp_include_cleanup_remove_unused_error_tag_type = dimmed |
cpp_include_cleanup_replacement_files
Include 정리 과정에서 file1을(를) file2(으)로 대체합니다. 예를 들어 stdio.h보다 cstdio를 사용하는 것을 선호할 수 있습니다. 파일에 #include <cstdio>와 #include <stdio.h>가 모두 있고 콘텐츠는 stdio.h에서만 사용하는 경우, 이 설정에서 Include Cleanup은 처리 중에 cstdio의 사용을 stdio.h로 대체했기 때문에 stdio.h를 제거하라고 알려줍니다. 어느 쪽의 내용도 사용하지 않으면 Include Cleanup에서 둘 다 제거하라고 알려 줍니다. |
file1:file2 | cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint |
cpp_include_cleanup_required_files
file1을 사용하려면 file2가 필요하도록 지정합니다. 예를 들어, atlwin.h를 사용하는 경우 altbase.h도 반드시 포함해야 한다고 지정합니다. |
file1:file2 | cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h |
cpp_sort_includes_error_tag_type
정렬 포함 메시지의 오류 수준을 설정합니다. none 는 기능을 해제합니다.
suggestion 는 ... 물결표를 표시하고 오류 목록에 메시지를 추가합니다.
warning에는 녹색 물결선이 표시되고 경고가 추가됩니다.
error 빨간색 물결선이 표시되고 오류가 추가됩니다. |
nonesuggestionwarningerror |
cpp_sort_includes_error_tag_type = suggestion |
cpp_sort_includes_priority_case_sensitive
true일 때, 정렬 비교에는 파일 이름이 대/소문자를 구분하여 포함됩니다.
false인 경우 정렬은 대/소문자를 구분하지 않습니다. |
truefalse |
cpp_sort_includes_priority_case_sensitive = false |
cpp_sort_includes_priority_style
정렬에서 대괄호 스타일을 고려하는지 여부를 제어합니다. ignore 는 대괄호를 고려하지 않고 정렬됩니다.
quoted는 따옴표로 묶인 include를 꺾쇠 괄호 include보다 먼저 정렬합니다.
angle_brackets은 꺾쇠 괄호 include를 따옴표 include보다 위에 정렬합니다. |
ignorequotedangle_brackets |
cpp_sort_includes_priority_style = quoted |
Visual Studio 2026부터 다음 설정을 사용할 수 있습니다:
| 설정 | 값 | 예시 |
|---|---|---|
cpp_include_cleanup_format_after_edits
이면 true정리 포함 작업 후에 형식 명령을 실행합니다. clang-format이 #include 지시문을 정렬하도록 설정된 경우 유용합니다. |
truefalse |
cpp_include_cleanup_format_after_edits = true |
cpp_include_cleanup_sort_after_edits
이 경우 true정리 포함 작업 후에 기본 제공 정렬 포함 기능을 실행합니다.
#include 지시문을 정렬하는 데 clang-format을 사용하지 않을 때 유용합니다. |
truefalse |
cpp_include_cleanup_sort_after_edits = true |
코드로 사용되지 않는 include 메시지 숨기기
Visual Studio 2026부터는 같은 줄에 // VCIC-Excluded 주석을 추가하여 개별 #include 지시문에 대해 Include Cleanup 메시지가 표시되지 않도록 할 수 있습니다. 포함 정리 도구는 사용되지 않는 것으로 표시되더라도 해당 포함을 제거할 것을 제안하지 않습니다. 향후 판독기에서 포함이 있는 이유를 알 수 있도록 표식 뒤의 선택적 근거 텍스트를 제공합니다.
#include "Header2.h" // VCIC-Excluded: needed for the ATL macros used below
전구 메뉴를 사용하여 #include 지시문에 // VCIC-Excluded 주석을 추가할 수도 있습니다. 기본적으로 꺼져 있으므로 도구>옵션>모든 설정>언어>C/C++>코드 정리>Include 정리에서 Include 정리가 켜져 있는지 확인하세요. 그런 다음 #include 줄에 커서를 올린 다음 기타 수정 사항>소스에서 VCIC002 억제를 선택합니다.
// VCIC-Excluded 주석은 파일의 #include에만 적용됩니다.
.editorconfig에서 cpp_include_cleanup_excluded_files을 설정하면 .editorconfig의 적용을 받는 모든 파일에 해당 제외 사항이 적용됩니다.