# 이유는 포맷팅 환경이 설정되어 있지 않아서다.
# 우선 clang-format 을 설치하자.
brew install clang-format
# settings.json 을 열어 다음과 같이 설정한다.
"C_Cpp.clang_format_path": "/usr/local/bin/clang-format",
# file 이라고 명시하면 현재 프로젝트의 루트 경로의 .clang-format 파일을 읽어 들인다.
"C_Cpp.clang_format_style": "file",
"C_Cpp.clang_format_style": "file",
# format_style 실패시 기본 셋팅(Visual Studio, LLVM, Google, Chromium, Mozilla, WebKit)
"C_Cpp.clang_format_fallbackStyle": "Visual Studio"
"C_Cpp.clang_format_fallbackStyle": "Visual Studio"
# lazyvim(neovim)에서는 conform 플러그인에 cpp 포맷터로 clang-format 을 설정한다.
return {
"stevearc/conform.nvim", -- For formatting
opts = {
-- formatters by file type
formatters_by_ft = {
cpp = { "clang-format" },
},
},
}
# 프로젝트 루트 위치에 .clang-format 파일을 다음과 같이 설정해 사용할 수 도 있다.
BasedOnStyle: Google
IndentWidth: 4
ColumnLimit: 100
# BreakBeforeBraces: Allman # Always break before braces.
BreakBeforeBraces: Attach # Always attach braces to surrounding context.
# 참고로 현재 경로의 모든 c/cpp 파일 포맷팅 적용
# --style=file 로 지정하면 .clanf-format 파일을 참고한다.
# -i 옵션을 주면 변경된 스타일이 파일에 적용된다.
fd ".c$|.cpp$" --exec clang-format --style=file -i
# 포맷 스타일 결과 비교, main 함수만 발췌
# 개인적으로 visualstudio 또는 google 스타일이 좋은것 같다.
# Visual Studio 는 Clang-format 기본스타일 종류에는 없고 다음과 같이 설정해야한다.
# clang-format --style="{UseTab: Never,IndentWidth: 4,
BreakBeforeBraces: Allman,
AllowShortIfStatementsOnASingleLine: false,
IndentCaseLabels: false,
ColumnLimit: 0}" hello_world.cpp
# 들여쓰기 탭, 시작 중괄호 한줄 차지
int main()
{
string a = "1";
if (a == "1")
{
cout << "hello world" << endl;
}
return 0;
}
# clang-format --style="google" hello_world.cpp
# 들여쓰기 공백2, 시작 중괄호 같은 라인에 시작
int main() {
string a = "1";
if (a == "1") {
cout << "hello world" << endl;
}
return 0;
}
# clang-format --style="webkit" hello_world.cpp
# 들여쓰기 공백4, 함수 시작 중괄호만 한줄, 함수내에서는 같은 라인에 시작
int main()
{
string a = "1";
if (a == "1") {
cout << "hello world" << endl;
}
return 0;
}
# clang-format --style="mozilla" hello_world.cpp
# 들여쓰기 공백2, 함수 시작 중괄호만 한줄, 함수내에서는 같은 라인에 시작
# 함수 리턴 타임 한줄 차지
int
main()
{
string a = "1";
if (a == "1") {
cout << "hello world" << endl;
}
return 0;
}
comments:
댓글 쓰기