알고리즘 문제를 풀 환경을 설정하다가 유용한 것 같아서 그리고 내가 나중에 까먹을 것 같아서 공유한다.
검색하면 자주 보이는 CodeRunner을 사용하는 것이 아니라 C/C++ Runner이라는 확장자를 활용하는 방식이다. 매우 유용한 확장자라서 굳이 이 용도가 아니더라도 본인 용도에 맞게 사용하면 될 것 같다.
g++
설치와 같은 기본 실행 환경은 갖췄다고 가정. 그리고 확장자에 설명으로 나와있지만 아무도 안 읽을 것 같으니 PATH
에다가 본인의 compiler 경로를 지정해놓아야 한다.
윈도우라면 이 글을, 리눅스라면 이 글을 참고해 설치하자.
사실 위의 글들은 잘 되는지 확인 안 했으니 잘 안되면 구글 검색을 해서 어떻게든 해보자. 죄송합니다.
먼저 확장자를 설치한다.
사실 이후 확장자에 있는 설명을 읽으면 됩니다...라고 퉁쳐도 되지만 보통 설명서는 읽기 귀찮으니...
저거를 설치하고 나면 다음과 같은 4개의 버튼이 밑의 바에 보이게 된다.
각각 build, run, debug, build 삭제라고 생각을 하면 된다.
저 4개의 버튼 바로 좌편에도 버튼이 하나 있다.
저건 build 모드를 설정하는 건데 Debug랑 Release가 있다.
이제 프로그램을 어떻게 실행하냐면... 설정 버튼을 누르면 그냥 build가 된다.
저렇게 build를 하고 재생 버튼을 누르면 실행이 된다.
위와 같은 마술...이 되는 이유는 사실 저 확장자를 설치하고 난 다음에 프로젝트를 만들면 settings.json
이라는 파일이 나오기 때문이다. 저 파일이 생성되는 조건은 현 VSCode 창을 연 디렉토리(root directory)에 cpp파일이 존재하는 경우다.
저 .json
파일에서 컴파일 옵션 등등을 설정하는 것이 가능하다. 이 중 디버깅 환경을 설정하려면 -g
option을 컴파일 옵션에 넣어야 변수 정보 등을 넣을 수 있다.
그래서 C_Cpp_Runner.compilerArgs
라는 field를 settings.json
에 찾아가지고 다음과 같이 compiler argument를 넣도록 하자.
이렇게 문자열 형식으로 넣으면 된다. 이후 다시 설정 버튼을 눌러 build하고, 실험 삼아 breakpoint를 하나 넣고, 아까 4개의 버튼 중 벌레 버튼을 누르거나 VS Code 왼쪽의 디버깅 실행을 통해 실행을 하면 쉽게 디버깅을 할 수 있다.
컴파일러 옵션을 조금만 응용해서, I/O redirection도 원활할 수 있도록 설정해보자. 백준같은 PS에서 디버깅을 원활히 하기 위해서 말이다.
freopen
을 쓰면 redirection을 편하게 할 수 있다. 하지만 제출을 할 때마다 주석 처리를 하는 것이 너무 귀찮다.
매크로와 컴파일러 옵션을 설정하면 이를 원활히 할 수 있다.
앞의 C_Cpp_Runner.compilerArgs
에다가 -D(매크로이름)
을 만들어 놓는다.
다음으로 코드를 다음과 같이 짜면 된다.
#ifdef (매크로이름)
...
#endif
이번 예제 같은 경우 밑과 같이 말이다.
#ifdef REDIRECT_IO
void input_redirection() {
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
}
#endif
...
int main() {
...
#ifdef REDIRECT_IO
input_redirection();
#endif
...
return 0;
}
그리고 input.txt
랑 output.txt
를 main.cpp
가 있는 경로에 저장해놓으면 된다. 이후 디버깅이든 일반 실행이든 수행을 하면, input.txt
에 따라 output.txt
에 결과물이 출력됨을 확인할 수 있다.
이러면 주석 처리를 따로 하지 않고 백준에 그대로 제출을 해도 문제가 없다. 답이 맞다면 말이다.