애플 실리콘 맥에서 c++ 코딩공부를 하고자 vscode를 이용하는데,
설정해주어야 하는 부분도 많고, 생각보다 번거로웠다.
그러다 갑자기 등장한 에러가 나의 발을 붙잡을 줄이야....🤯 🤯
error: non-aggregate type 'vector<std::string>' (aka 'vector<basic_string<char, char_traits<char>, allocator<char> > >') cannot be initialized with an initializer list
우선 내가 작성한 코드는 아무 문제가 없는 간단한 벡터 선언문이였다.
int main() {
vector<string> part = {"leo", "kiki", "eden"};
vector<string> comp = {"eden", "kiki"};
cout << solution(part, comp) << endl;
return 0;
}
이 부분을 해결하려고 정말 많은 시도를 했고, 결국에는 해결을 했다.
VSCode에서 Code Runner를 사용하여 컴파일 할 때
C ++ 11 Warning이 나오거나 C ++ 17 이후의 기능이 인식되지 않아서 생기는 컴파일 오류인 듯 하다.
나처럼 고생하지 않기를 바라는 마음에 포스팅을 작성한다.
해결방안
1) Extension : Code Runner 설치
우선, Code Runner가 없다면 설치를 해주도록 하자.
2) settings.json 에 코드 추가
command + shift + P 클릭 후
Preferences: Open Workspace Settings (JSON) 를 클릭하면 settings.json 파일을 열 수 있다.
"code-runner.executorMap": {"cpp": "cd $dir && g++ -std=c++17 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"}
"code-runner.executorMap": {"cpp": "cd $dir && g++ -std=c++17 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"}
settings.json 코드에 위의 코드를 추가한다.
에러가 사라지고 정상적으로 작동될 것이다.
혹시, 해결되지 않는다면 vscode를 껐다가 다시 실행해보도록 한다!