반응형



Windows와 Ubuntu 환경에 설치된 Visual Studio Code에서 C/C++을 컴파일하고 실행시키는 방법에 대해 설명합니다. 

테스트에 사용한 운영체제 버전은 Windows 10과 Ubuntu 18.04입니다.


Visual Studio Code 버전에 따라 진행 방법이 달라 질 수 있습니다.

문제가 되는 것을 발견할때 마다 문서를 업데이트합니다.

현재 문서는 Visual Studio Code 1.48에서 테스트 한 결과입니다. 



컴파일시 에러 메시지를 영어로 보려면 다음 명령을 터미널에서 실행하세요.

chcp 437




1. C/C++ 컴파일러 설치


2. Visual Studio Code 설치


3. C/C++ 프로젝트 폴더 생성


4. C/C++ 언어 지원 설치


5. 코드 컴파일 및 실행


6. 한글 입출력 예제 


7. 디버깅하는 방법 




2017.  8. 15   최초 작성

2018.  1.   9   tasks.json 일부 문법 변경으로 수정

2018.  1. 17   IntelliSense와 디버깅 방법 추가

2018.  7.  3   Ubuntu에서 하는 방법과 통합

2018.  7.  19  한글 입출력 예제 추가 

2018.  10. 12  최신 버전에서 확인 및 수정

2018.  11. 20  리눅스에서 tasks.json 수정

2018.  12. 3  디버깅 방법 개선

2018. 12.22  Windows 10 RS5(버전 1809)로 업데이트시 한글 깨짐 현상 발생

2019. 5. 1  1.33에서 바뀐점 수정

2019. 5. 21  전역 변수 디버깅 방법 추가 

2019. 6. 20  비주얼 스튜디오 코드 업데이트로 바뀐점 수정

2019. 8. 15  디버깅 관련 수정, mingw-w64에 맞추어 수정

2019. 8. 20  Ubuntu를 위한 부분 업데이트

2019. 10. 22 디버그시 launch.json 생성 문제 해결방법 추가

2019. 11. 17 utf8을 사용해도 한글 안 깨지도록 수정

2019. 12. 1   euc-kr로 변경

2020. 4. 12  우분투에서 컴파일된 프로그램 실행시 에러나는 문제 해결

                     lenilune3님이 알려주신 건데 이제서야 반영했네요.  

2020. 6. 26  Windows 10 - 64비트 컴파일러로 변경

2020. 9.  2  Windows 10에서 동작 확인 




1. C/C++ 컴파일러 설치 

1.1. Windows 


아래 링크에서 MinGW-W64 GCC-8.1.0 항목에 있는 x86_64-posix-seh를 다운로드합니다. 64비트 컴파일러입니다.

혹 32비트 컴파일러가 필요하면 i686-posix-dwarf를 다운로드 받으세요.  본 문서는 64비트 컴파일러를 기준으로 진행합니다.


https://sourceforge.net/projects/mingw-w64/files/mingw-w64/ 





압축을 풀어 C:\mingw64에 복사해줍니다. 





윈도우 키 + R을 눌러서 보이는 실행창에서 sysdm.cpl를 입력하고 엔터를 누릅니다. 





고급 탭을 클릭하고 아래 보이는 환경 변수 버튼을 클릭합니다. 





시스템 변수에서 Path를 선택하고 편집 버튼을 클릭합니다. 





새로 만들기 버튼을 클릭한 후.. 맨 아래에 다음 경로를 입력합니다.


C:\mingw64\bin

 




윈도우 키 + R을 입력 후, cmd 엔터를 눌러서 실행되는 명령 프롬프트 창에서 

다음처럼 gcc -v 명령이 실행 가능해지는지 확인하세요.





1.2. Ubuntu


build-essential 패키지를 설치하면 gcc, g++ 등 컴파일에 필요한 패키지들이 설치됩니다.


$ sudo apt-get install  build-essential


webnautes@webnautes-pc:~$ sudo apt-get install  build-essential
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다      
상태 정보를 읽는 중입니다... 완료
다음의 추가 패키지가 설치될 것입니다 :
  g++ g++-7 gcc
제안하는 패키지:
  g++-multilib g++-7-multilib gcc-7-doc libstdc++6-7-dbg gcc-multilib flex
  bison gcc-doc
다음 새 패키지를 설치할 것입니다:
  build-essential g++ g++-7 gcc
0개 업그레이드, 4개 새로 설치, 0개 제거 및 81개 업그레이드 안 함.
7,577 k바이트 아카이브를 받아야 합니다.
이 작업 후 25.0 M바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] 




2. Visual Studio Code 설치

다음 포스팅을 참고하여 진행하세요. 




Visual Studio Code 설치하는 방법( Windows / Ubuntu )

http://webnautes.tistory.com/1197 





여기서부터는 윈도우와 우분투에서 똑같이 진행하면 됩니다.

유저 인터페이스 언어를 한글로 바꾸려면 Ctrl + Shift + P를 누르고 입력창이 보이면 dislay를 입력하고 엔터를 누릅니다.




Install additional languages를 선택합니다.




Korean Language Pack을 선택하고 초록색 Install 버튼을 클릭하여 설치합니다. 




설치 완료 후, 설정을 반영하기 위해 비주얼 스튜디오 코드를 종료했다가 다시 실행합니다. 



설치 완료후 Visual Studio Code를 종료했다가 다시 시작하면 유저 인터페이스가 한글로 변경됩니다. 





3. C/C++ 프로젝트 폴더 생성

Hello, World!를 출력하는 프로그램 코드를 작성해보겠습니다. 


3-1. 왼쪽에 위치한 액티비티 바에서 탐색기 아이콘을 클릭하거나, 단축키 Ctrl + Shift + E를 누르면 아래 캡쳐화면처럼 사이드바에 탐색기가 열립니다.





3-2. 탐색기에서 폴더 열기를 클릭합니다.





3-3.  윈도우의 경우에는 왼쪽 위에 보이는 새 폴더를 클릭하여 C_C++_Projects 폴더를 생성합니다. 

( 이름에 빈칸이나 & 등을 쓸수 없는 제약이 있습니다. )


생성된 C_C++_Projects 폴더를 선택하고 폴더 선택 버튼을 클릭합니다.





우분투의 경우에는 로그인 사용자 폴더로 이동한 후  폴더 만들기를 클릭하여  C_C++_Projects 이름의 폴더를 생성합니다. 

생성된 폴더로 이동한 후 확인 버튼을 클릭합니다.





다음처럼 오른쪽 위에 아이콘이 보일 수도 있습니다.






3-4. 탐색기에 C_C++_PROJECTS 폴더가 추가되었습니다.




3-5. C와 C++ 소스 코드 파일를 위한 별도의 하위 폴더를 생성하도록 하겠습니다.

우선 C언어를 위한 폴더를 생성합니다. 생성된 폴더를 클릭하면 보이는 새 폴더 아이콘을 클릭합니다.





3-6. helloworld를 입력하고 엔터를 눌러서 helloworld 폴더를 생성합니다.





3-7. 새 파일 아이콘을 클릭합니다.





3-8. hello.c를 입력하고 엔터를 눌러서  파일을 생성합니다. 편집기 영역에  hello.c 파일이 열립니다.





오른쪽 아래에 C/C++ 확장 권장 메시지 박스가 보이면 Install 또는 설치를 클릭하여 설치합니다.





3-9. hello.c 파일에 다음 코드를 입력합니다.


#include <stdio.h>

 

int main()

{

    printf("Hello, world!\n");

    return 0;

}




3-10. 입력 후, 탭에 표시된 파일 이름 옆에 하얀색 동그라미가 표시됩니다.





Ctrl + S를 눌러 저장하면 하얀색 곱하기 표시로 변합니다.





3-11. 이번엔 C++ 코드를 위한 폴더를 생성합니다. 

아래 캡쳐화면처럼 빈 공간(빨간색 사각형)을 클릭합니다.

그러면 helloworld에 대한 선택이 해제됩니다. 





3-12. C_C++_PROJECTS에 마우스 커서를 가져가면 보이는 새폴더 아이콘을 클릭합니다. 





3-13. helloworldcpp를 입력하고 엔터를 눌러서 폴더를 생성합니다. 





3-14. 이제 helloworldcpp가 선택된 상태입니다.  C_C++_PROJECTS 옆에 보이는 새파일 아이콘을 클릭하면 helloworldcpp 폴더에 파일을 추가할 수 있습니다. 


새파일 아이콘을 클릭하고 hello.cpp를 입력 후 엔터를 누르면 캡쳐화면처럼 파일이 생성됩니다. 





3-15. 다음 내용을 hello.cpp 파일에 입력하고 Ctrl + S를 눌러서 저장합니다. 


#include <iostream>

using namespace std;

int main()
{
    cout << "Hello, World!" << endl;


    return 0;
}




3-16. 현재 탐색기에 있는 파일과 폴더 목록입니다.




4. C/C++ 언어 지원 설치

4-1. C/C++에 대한 문법 강조(Syntax highlighter)는 기본적으로 지원하고 있습니다. 

하지만 Visual Studio Code에서 C/C++을 제대로 사용하려면 C/C++ 확장을 설치해줘야 합니다. 


앞에서 아래와 같은 창이 보여 설치했다면 4.2를 건너뛰고 4.3을 진행하세요.





4-2. 설치 창이 보이지 않았다면

Ctrl + Shift + X를 누르거나 액티비티 바에서  확장 아이콘을 클릭 후, 입력란에 c/c++을 입력합니다. 





검색된 리스트에서 C/C++ 항목에 있는 초록색  설치를 클릭합니다.




설치한 확장을 적용시키기 위해  비주얼 스튜디오 코드를 종료시켰다가 다시 실행합니다. 




4-3.  C/C++ 확장이 설치된후 진행해야합니다. 다음처럼 보이면 진행중입니다. 



Ctrl + Shift + P를 눌러서 보이는 입력 창에 c/c++을 입력한 후, 

C/C++: 구성 편집(UI)를 선택합니다. 




4-4. IntelliSense 구성이 보입니다.  윈도우의 경우 4-5를 우분투의 경우 4-6을 진행하세요. 


4-5. 윈도우의 경우 컴파일러 경로에 3개의 컴파일러가 인식되어 있습니다. 





헤더파일 인식하여 작성한 코드에 유용한 정보를 제공하기 위해 필요한 작업입니다. 

사용하는 언어가 C이면 gcc, 사용하는 언어가 C++이면 g++을 선택해주세요. 

하나의 폴더에서 두 언어 다 사용하는 경우에는 g++을 선택해도 무방한듯합니다. 





4-6. 우분투의 경우에도 컴파일러들이 인식됩니다. 

헤더파일 인식하여 작성한 코드에 유용한 정보를 제공하기 위해 필요한 작업입니다. 

사용하는 언어가 C이면 gcc, 사용하는 언어가 C++이면 g++을 선택해주세요. 

하나의 폴더에서 두 언어 다 사용하는 경우에는 g++을 선택해도 무방한듯합니다. 





4-7. 윈도우/우분투 공통부분입니다. IntelliSense 모드로 gcc-x64를 선택합니다.





4-8. 설정이 자동으로 저장되므로 현재 탭을 닫아도 됩니다. 





4-9. 탐색기를 보면 .vscode 폴더에 c_cpp_properties.json파일이 추가되어 있습니다.





4-10. 추가 헤더파일을 인식하게 하고 싶으면 ‘includePath 항목에 추가하세요. 

기존 항목 끝에 콤마(,)를 추가한 후, 추가할 헤더파일 경로를 입력하면 됩니다. 


언어 표준을 지정할 필요한 경우 다음 항목에서 C언어와 C++언어 표준을 지정하면 됩니다. 

            "cStandard": "c11",

            "cppStandard": "gnu++14",



{

    "configurations": [

        {

            "name": "Win32",

            "includePath": [

                "${workspaceFolder}/**"

            ],

            "defines": [

                "_DEBUG",

                "UNICODE",

                "_UNICODE"

            ],

            "compilerPath": "C:/mingw64/bin/g++.exe",

            "cStandard": "c11",

            "cppStandard": "gnu++14",

            "intelliSenseMode": "gcc-x64"

        }

    ],

    "version": 4

}


{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
               "${workspaceFolder}/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/g++",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}



5. 코드 컴파일 및 실행


5-1. Visual Studio Code의 메뉴에서 터미널 > 기본 빌드 작업 구성을 선택합니다.


폴더에서 사용하는 언어에 맞추어 선택하세요.

사용하는 언어가 C이면 gcc, 사용하는 언어가 C++이면 g++을 선택해주세요. 

하나의 폴더에서 두 언어 다 사용하는 경우에는 g++을 선택해도 무방한 듯합니다.  





5-2. 아래 항목들은 Visual Studio Code 1.48에서 보이지 않습니다. 


템플릿에서 tasks.json 파일 만들기를 선택합니다. 




Others를 선택합니다.





5-3. 탐색기의 .vscode 폴더에   tasks.json 파일이 추가되고 편집기에서 해당 파일이 열립니다.





5-4. tasks.json 내용을 다음으로 교체하고 Ctrl + S를 눌러서 저장합니다.


{
    "version": "2.0.0",
    "runner": "terminal",
    "type": "shell",
    "echoCommand": true,
    "presentation" : { "reveal": "always" },
    "tasks": [
          //C++ 컴파일
          {
            "label": "save and compile for C++",
            "command": "g++",
            "args": [
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "group": "build",

            //컴파일시 에러를 편집기에 반영
            //참고:   https://code.visualstudio.com/docs/editor/tasks#_defining-a-problem-matcher

            "problemMatcher": {
                "fileLocation": [
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern": {
                    // The regular expression.
                  //Example to match: helloWorld.c:5:3: warning: implicit declaration of function 'prinft'
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        },
        //C 컴파일
        {
            "label": "save and compile for C",
            "command": "gcc",
            "args": [
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "group": "build",

            //컴파일시 에러를 편집기에 반영
            //참고:   https://code.visualstudio.com/docs/editor/tasks#_defining-a-problem-matcher

            "problemMatcher": {
                "fileLocation": [
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern": {
                    // The regular expression.
                  //Example to match: helloWorld.c:5:3: warning: implicit declaration of function 'prinft'
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        },
        // 바이너리 실행(Ubuntu)
        // {
        //     "label": "execute",
        //     "command": "${fileDirname}/${fileBasenameNoExtension}",
        //     "group": "test"
        // }
        // 바이너리 실행(Windows)
        {
            "label": "execute",
            "command": "cmd",
            "group": "test",
            "args": [
                "/C", "${fileDirname}\\${fileBasenameNoExtension}"
            ]
   
        }
    ]
}




우분투의 경우에는 아래처럼 수정해서 사용하세요.


        // 바이너리 실행(Ubuntu)
        {
            "label": "execute",
            "command": "${fileDirname}/${fileBasenameNoExtension}",
            "group": "test"
        }
       // 바이너리 실행(Windows)
        //{
        //    "label": "execute",
        //    "command": "cmd",
        //    "group": "test",
        //    "args": [
        //        "/C", "${fileDirname}\\${fileBasenameNoExtension}"
        //    ]
   
        // }





5-6. 단축키를 설정해줍니다.   메뉴에서 파일 > 기본 설정 > 바로 가기 키를 선택합니다. 

이미 설정되어 있는 단축키 목록을 보여줍니다. 


사용자 정의로 바로 가기 키를 추가해야 합니다. 캡처화면에 빨간색 사각형으로 표시한 아이콘을 클릭합니다.





5-7. 다음처럼 입력하고 Ctrl + S를 눌러서 저장합니다. 기본값을 무시하고 현재 입력한 값이 우선 적용됩니다.

(단 우분투의 경우 데스크톱 환경의 단축키가 우선입니다. 다른 곳에서 사용하지 않는 단축키를 사용해야 합니다.)


// 키 바인딩을 이 파일에 넣어서 기본값을 덮어씁니다.
[
    //컴파일
    { "key": "ctrl+alt+c", "command": "workbench.action.tasks.build" },
   
    //실행
    { "key": "ctrl+alt+r", "command": "workbench.action.tasks.test" }
]




5-8. 탐색기에서 hello.c를 선택하고 Ctrl +Alt + C를 누르면 보이는 항목에서 save and compile for C를 선택합니다.




편집 중이던 모든 파일 저장되고 앞에서 터미널컴파일 진행결과가 보입니다.

문제없이 컴파일이 진행되어다면 왼쪽 탐색기에 컴파일 결과물인 hello.exe 파일이 보입니다. 





Ctrl  + Alt + R을 누르면 보이는 execute를 선택합니다.




실행 결과가 터미널에 보여집니다.





5-9. 탐색기에서 hello.cpp를 선택하고 Ctrl +Alt + C를 누르면 보이는 항목에서 save and compile for C++를 선택합니다.




편집 중이던 모든 파일 저장되고 앞에서 터미널컴파일 진행결과가 보입니다.

문제없이 컴파일이 진행되어다면 왼쪽 탐색기에 컴파일 결과물인 hello.exe 파일이 보입니다. 




Ctrl  + Alt + R을 누르면 보이는 execute를 선택합니다.




실행 결과가 터미널에 보여집니다.





참고로 소스코드별로 별도의 폴더를 생성하지 않고 하나의 폴더에 여러 개의 소스코드를 작성하여 컴파일 하는 것도 가능합니다.





6. 한글 입출력 예제 


6-1. 리눅스 환경이라면 별다른 설정 변경없이 진행가능합니다. 7번을 진행하세요.


아래처럼 진행했는데 한글이 깨지는 경우 윈도우를 업데이트 해보세요..


메뉴에서 파일 > 기본설정 > 설정 을 선택합니다.

encoding을 검색하여 Encoding 항목을 euckr로 변경합니다.




다음 예제를 새로운 파일로 저장하여 실행시켜보면 


#include <stdio.h>

int main()
{
    printf("문자열을 입력후 엔터를 누르세요!\n");

    char a[256];
    scanf("%s", a);

    printf(" \" %s \" 를 입력하셨네요.\n", a);
    return 0;
}



다음처럼 코드에 입력한 한글 문자열 출력과 입력한 문자열에 대한 출력이 모두 정상인 것을 볼 수 있습니다.



7. 디버깅하는 방법

진행하기 전에 위에서 작업했던 일부를 수정해야 합니다. 

프로젝트 폴더의 .vscode 폴더에 있는 tasks.json 파일을 열어서 컴파일 시 디버그 정보를 포함하도록 합니다. 




7-A C++ 언어 디버깅


7-1. 테스트 해보기 위해서 새로운 하위 폴더를 생성하여 main.cpp 파일을 추가합니다. 

먼저 C++ 파일의 경우부터 보겠습니다.


#include <iostream>

using namespace std;

int c = 0;
int d = 100;

int main()
{
    int a = 2;
    int b = 2;
    int c = a + b;

    cout << a << " + " << b << " = " << c << endl;

    return 0;
}






숫자 5 왼쪽으로 마우스 커서를 이동 후. 마우스 왼쪽 버튼을 클릭하면 빨간점이 표시됩니다.

디버깅이 시작되면 잠시 멈추게되는 브레이크 포인트입니다. 

 




7-2.  Ctrl + Shift + P를 누른 후, 입력창에 launch를 입력하고 

디버그:launch.json 열기를 클릭합니다. 




C++(GDB/LLDB)를 선택합니다.




g++.exe를 선택합니다. 





잠시 기다리면 디버깅이 시작됩니다. 

F11을 눌러서 다음 줄이 실행되게 할 수 있습니다. 

왼쪽에 보이는 변수 창에 지역 변수가 업데이트 됩니다. 





.vscode 폴더에 launch.json 파일이 생성되어야 하는데 

현재는 다음과 같은 에러가 난다면...




.vscode 폴더에 launch.json 파일을 추가해줍니다. 



launch.json 파일에 다음 내용을 추가해줍니다. 


윈도우의 경우 다음 부분이 현재 사용중인 컴파일러와 경로가 다르다면 수정해줘야 합니다.  

"miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",


{

    // IntelliSense를 사용하여 가능한 특성에 대해 알아보세요.

    // 기존 특성에 대한 설명을 보려면 가리킵니다.

    // 자세한 내용을 보려면 https://go.microsoft.com/fwlink/?linkid=830387을(를) 방문하세요.

    "version": "0.2.0",

    "configurations": [

        {

            "name": "g++.exe - 활성 파일 빌드 및 디버그",

            "type": "cppdbg",

            "request": "launch",

            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",

            "args": [],

            "stopAtEntry": false,

            "cwd": "${workspaceFolder}",

            "environment": [],

            "externalConsole": false,

            "MIMode": "gdb",

            "miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",

            "setupCommands": [

                {

                    "description": "gdb에 자동 서식 지정 사용",

                    "text": "-enable-pretty-printing",

                    "ignoreFailures": true

                }

            ],

            "preLaunchTask": "C/C++: g++.exe build active file"

        }

    ]

}



우분투의 경우 다음 설정을 사용하세요.


{
   // IntelliSense를 사용하여 가능한 특성에 대해 알아보세요.
    // 기존 특성에 대한 설명을 보려면 가리킵니다.
    // 자세한 내용을 보려면 https://go.microsoft.com/fwlink/?linkid=830387을(를) 방문하세요.
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++.exe build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/usr/bin/gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}







7-3. 7-2 작업은 한번만 해주면 됩니다. 이후에는 브레이크 포인트를 지정하고 F5를 누르면  디버깅이 시작됩니다. 




7-4. main함수 에서 사용하는 전역 변수 c는 변수 항목의 Locals에 추가되었는데 

전역변수 d의 경우에는 추가되어 있지 않습니다. 




이 경우 조사식에 마우스 커서를 가져가면 보이는 + 아이콘을 클릭하고 




추가할 변수 이름을 입력후 엔터를 누르면




해당 변수의 값이 보입니다.





7-B C언어 디버깅


별도의 추가 작업 없이 동일하게 디버깅이 가능했습니다. 

앞에서 C++ 디버깅 테스트시 launch.json 설정 파일이 생성되었기 때문입니다. 







반응형

포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
댓글로 알려주시면 빠른 시일내에 답변을 드리겠습니다.

여러분의 응원으로 좋은 컨텐츠가 만들어집니다.
지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다. 감사합니다 : )

유튜브 구독하기


제가 쓴 책도 한번 검토해보세요.

  1. 이전 댓글 더보기
  2. 김민철 2020.08.15 15:08

    > Executing task: gcc c:\Users\User\PycharmProjects\untitled3\helloworld\hello.c -o c:\Users\User\PycharmProjects\untitled3\helloworld/hello <

    gcc.exe: error: c:UsersUserPycharmProjectsuntitled3helloworldhello.c: No such file or directory
    gcc.exe: fatal error: no input files
    compilation terminated.
    터미널 프로세스 "C:\Program Files\Git\bin\bash.exe '-c', 'gcc c:\Users\User\PycharmProjects\untitled3\helloworld\hello.c -o c:\Users\User\PycharmProjects\untitled3\helloworld/hello'"을(를) 시작하지 못했습니다(종료 코드: 1).

    터미널이 작업에서 다시 사용됩니다. 닫으려면 아무 키나 누르세요.

    이런식으로 나오면서 계속 실행이 안되는데 어떻게 해야하나요

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.08.15 15:33 신고

      터미널에서 PS가 앞에 보인다면 아래 링크대로해서 명령 프름프트를 기본쉘로 변경해보세요

      https://stackoverflow.com/a/43751743

  3. 박준영 2020.08.24 15:16

    정말 감사합니다 ㅠㅠ 일주일의 삽질을 하루로 줄여 주셨어요

  4. sos0911 2020.08.25 21:50

    감사합니다.
    이 포스팅 덕분에 vs code로 c++을 컴파일하고 돌려볼 수 있게 되었습니다.
    그런데, c++ 디버깅을 vs code로 진행할 때 전역변수는 조사식에 하나하나 추가해 주어야만 볼 수 있는 건가요?
    만약 그렇다면 이건 조금 불편한 것 같네요..!

    • BlogIcon sos0911 2020.08.25 21:54

      아.. 전역변수들 중에서도 나오는 게 있고 안 나오는게 있네요. 기준이 따로 있는 건가요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.08.25 22:59 신고

      자동으로 추가되지는 않는 듯합니다. 확장 중에 편하게 사용할 수 있는 방법이 있을 수도 있습니다.

      전역변수가 디버깅되지 않는 기준은 저도 모르는 부분입니다.

  5. BlogIcon seneng 2020.08.31 09:36

    덕분에 잘 참고했습니다. 그런데 hello.c, hello.cpp를 컴파일을 하면 hello.exe 파일이 나오지 않고 hello파일만 추가됩니다. 클릭해보면 '파일이 이진이거나 지원되지 않는 텍스트 인코딩을 사용하기 때문에 편집기에서 표시되지 않습니다. 그래도 여시겠습니까?' 라는 메시지가 뜨면셔 그래도 여시겠습니까를 클릭하면 깨진 파일이 나오는데요, 이 문제점에 대해 혹시 아시는 게 있나요? 사용하는 운영체제는 ubuntu입니다.

  6. Favicon of https://shinejaram.tistory.com BlogIcon 느루늘품 2020.09.07 23:12 신고

    말씀하신대로 진행했는데 한글 폰트가 깨져서 나옵니다.
    현재 윈도우 버젼도 최신 업데이트로 되어 있고(200907 기준)
    chcp 를 입력해 활성 코드 페이지: 949도 확인 했습니다;;
    encoding 도 euckr로 되어 있는데 왜 그럴까요?? ㅠㅠ

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.09.08 06:25 신고

      기존 파일을 열었는데 깨지는거 아닌가요?

    • Favicon of https://shinejaram.tistory.com BlogIcon 느루늘품 2020.09.08 11:18 신고

      게시물에 올려주신 예제를 가지고 진행 했습니다.
      臾몄옄?댁쓣 ?낅젰???뷀꽣瑜??꾨Ⅴ?몄슂!
      실행하면 위에 쓴 것처럼 폰트가 전부 깨져서 나옵니다;;;
      게시물이나 댓글에 알려주신 방법을 다 사용 한 것 같은데도 이런 현상이 발생하고 있어서 어떻게 해야할지 모르겠습니다;;

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.09.09 22:48 신고

      파일이 열린상태에서 오른쪽 아래에 인코딩이 UTF8인지 EUC-KR인지 확인해보세요.

  7. Favicon of https://shinejaram.tistory.com BlogIcon 느루늘품 2020.09.08 11:31 신고

    저 디버깅 부분 진행 중인데, 디버깅을 시작할 수 없다면서 현재 파일이 저장된 경로가 Invalid argument로 나옵니다.
    경고문 내용 중 일부가 Unexpected GDB output from command "-environment-cd (파일 저장 위치)" 이렇게 나오는데 어떻게 해결해야 하나요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.09.09 22:48 신고

      전체 로그를 올려주셔야 합니다. 혹 로그가 올라간 링크를 올려주세요.

  8. yajoe 2020.09.10 15:40

    와...너무 복잡하네요ㅋㅋㅋㅋㅋㅋ한번 쭉 따라서는 해봤는데 다시 하라면 그냥 조용히 비주얼 스튜디오를 깔거같네요 ㅜㅜ

  9. yoon 2020.09.10 16:51

    디버깅 테스트 하는 과정에서 Unable to start debugging. Unexpected GDB output from command "-environment-cd D:\\OneDrive\\문서\\C_C++_Projects". D:\\OneDrive\\문서\\C_C++_Projects: No such file or directory. 라는 문구와 함께 오류로 더이상 진행을 못 합니다. '문서' 부분이 한글인 것이 원인인지 알아보려고 윈도우 파일 탐색기로 속성탭에서 위치를 확인했는데, D:\\Onedrive\\Documents 로 영어인 것을 볼 수 있었습니다. 하지만 vscode 터미널에서는 한글로 나오더라구요. 무엇이 문제일까요? ㅠㅠ

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.09.10 20:12 신고

      프로젝트 경로를 한글 이름이 없는 다른 곳으로 바꿔보세요.

  10. cplusplus 2020.09.16 13:44

    덕분에 오랫동안 헤매던 컴파일 작업을 실행할 수 있게 되었습니다! 정말 감사해요ㅠ
    그런데 다른 코드들은 잘 실행되는데 fstream 헤더 파일을 이용한 파일 입출력 코드는

    > Executing task: cmd /C 'c:\Users\na young\Documents\OOP\.vscode\Assignment1\problem1' <


    터미널이 작업에서 다시 사용됩니다. 닫으려면 아무 키나 누르세요.

    이런 식으로 공란만 뜨고 아무런 실행결과가 나오지 않습니다ㅠ 이런 경우에는 어떻게 하면 될까요..?

  11. 초보 2020.09.25 10:22

    정말 큰 도움되었습니다. 포스팅 감사드립니다.

  12. Xhsl 2020.09.25 12:48

    ㅜㅠ 포스팅이 도움이 많이 되고 있는데요 혹시 그 처음에 잘못하고 경로에 한글이 추가된 경우에는 어떻게 해야 바꿀 수 있나요 ㅠㅠ 그거 때문에 디버깅이 안되는거 같아서요 ㅠㅠ

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.09.25 20:01 신고

      프로젝트 폴더를 복사하여 다른 곳으로 이동하여 진행하면 됩니다.

    • Xhsl 2020.09.26 00:21

      감사합니다 ㅜㅠ 덕분에 디버깅도 잘 돌아가네요
      늘 좋은 정보 잘 보고 있습니다 ㅠㅠ즐거운 추석 되세요

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.09.26 05:31 신고

      감사합니다

  13. 킹크렙 2020.10.10 06:09

    친절한 포스팅과 댓글 답변... 참 감사드립니다. 늘 행복하세요!

  14. 안녕하세요 2020.10.28 02:21

    안녕하세요 이제 C 입문 위한 코린이 입니다.
    몇가지 궁금한 점이 있습니다.

    1. C 코딩시 "cStandard": "c11" 등의 언어표준을 사용하는 이유는 무엇인가요?? 지정하지 않을경우 컴파일러가 지원하는 가장 최신버전으로 컴파일 되나요???

    2. tasks.json 파일이 어떤 역할을 하는지 왜 교체해야 하는지 궁금합니다.

    허접한 질문 죄송합니다.

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.10.28 18:37 신고

      1. 정확한 답변이 아닐 수 있습니다. 컴파일러를 만드는 곳이 여러군데이기 때문에 언어 표준을 만드는 걸로 알고 있습니다. 언어 표준을 지정하지 않는 경우 디폴트로 사용하는 언어 표준이 컴파일러마다 다를겁니다.

      2. 컴파일 하기 위해 필요한 설정파일입니다. 디폴트 설정값으로도 동작하지만 좀 더 기능을 추가하기위해 교체합니다

  15. wkk23 2020.10.30 01:13

    [4-5. 윈도우의 경우 컴파일러 경로에 3개의 컴파일러가 인식되어 있습니다.] 에서 '검색된 컴파일러 경로가 없음'이라 뜨는데 어떻게 해야 하나요?

    그래서 그냥 화면에 써진 대로 직접 경로 친 다음에 쭉 진행했는데 [5-8. 탐색기에서 hello.c를 선택하고 Ctrl +Alt + C를 누르면 보이는 항목에서 save and compile for C를 선택합니다.] 에서 터미널에 [ 'gcc'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.]라고 뜨네요... ㅠㅠ 어떻게 해결해야 하나요??

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.10.30 07:36 신고

      명령 프롬프트에서 gcc가 실행안된다면 환경변수 path,에 적은 경로를 확인해보세요

    • BlogIcon wkk23 2020.11.04 15:22

      감사합니다. 해결됬어요.
      그런데 디버깅까지 하고 나서 소스코드를 빌드하면 c/c++ 선택하는 창이 안나오고 바로 작동이 됩니다. 그리고 실행파일이 소스코드 파일이랑 같은 폴더에 생성되지 않고 가장 위에(?) 폴더인 C-C++_Projects 폴더에 생성이 됩니다. 빌드하면 소스코드 파일이랑 같은 폴더에 생성되게 하고 싶은데 어떻게 하면 될까요? 디버깅 하기 전에는 잘만 됬는데 디버깅 설정 하고 나서부터 빌드하면 c/c++ 선택창이 안뜨고 바로 되고(터미널 우측 상단 박스칸에 1:작업- C/C++:g++.exe build active file 이라고 뜹니다.) 실행파일도C_C++_Projects 파일에만 생성되네요....

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.11.04 19:16 신고

      동작이 이상한 경우에는 재설치해보는게 좋습니다.

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.11.04 19:16 신고

      포스트는 진행한 순서대로 기록한 결과입니다

  16. Favicon of https://dongkyun-jang.tistory.com BlogIcon 장동균 2020.11.05 21:08 신고

    좋은 게시물 정말 감사합니다. 다름이 아니라 ctrl+alt+c 를 하면 처음에는 c로 할껀지 c++로 할껀지 선택창 두 개가 잘 나옵니다. 그런데 한 번 선택하게 되면 계속해서 자동으로 그것이 선택됩니다. 처음에 c를 선택했더니 계속해서 자동으로 c를 선택하는 바람에 c++ 코드를 컴파일하지 못하고 있습니다... 혹시 방법이 있을까요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.11.05 21:10 신고

      언어별로 프로젝트 폴더를 따로 만들어야 할듯합니다

  17. Favicon of https://dongkyun-jang.tistory.com BlogIcon 장동균 2020.11.05 21:13 신고

    언어별로 따로 폴더를 만들었는데도 그렇다면 다시 까는 수 밖에 없는 걸까요..? 원래 잘 됐었는데 오랜만에 하려고 들어왔더니 계속 c compiler로만 컴파일이 되어서 에러가 납니다

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.11.05 21:15 신고

      저도 원인은 알지 못합니다. 다시 설치해보는 수밖에 없을듯합니다

  18. Favicon of https://wigden-codingshop.tistory.com BlogIcon Wigden 2020.11.20 09:41 신고

    안녕하세요 작성글 정말 친절하게 설명해주셔서 큰 도움이 됐습니다ㅎㅎ
    질문이 한가지 있는데요
    1) Ctrl+Alt+C 와 Ctrl+Alt+R 로 컴파일 후 실행하는것과
    2) F5 를 눌러 디버깅 후 실행하는것이 디버깅 유무 외에 어떤차이가 있나요?

    1)방법으로 했을땐 한글이 안깨지는데 2)방법으로 했을때는 한글이 깨지네요ㅠ
    혹시 해결할 수 있는 방법을 가르쳐주시면 감사하겠습니다.
    감사합니다.

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.11.20 23:25 신고

      확인해보니 디버깅모드에서는 한글을 출력하는 경우 깨지는 군요. vscode에서 이 부분을 해결하는 부분을 찾아봤는데 아직 마땅한 방법이 안보이네요.

  19. Favicon of https://flreauniverse.tistory.com BlogIcon Flrea 2020.11.22 18:00 신고

    안녕하세요. 좋은 정보 정말 감사합니다ㅠㅠ
    근데 한 가지, 여쭈어 볼 것이 있는데
    #include <stdio.h>

    int main()
    {
    printf("문자열을 입력후 엔터를 누르세요!\n");

    char a[256];
    scanf("%s", a);

    printf(" \" %s \" 를 입력하셨네요.\n", a);
    return 0;
    }
    이 예제를 디버깅 할 때, scanf 함수가 작동되지가 않네요.
    c언어 디버깅에 사용된 예제를 디버깅하면 정상적으로 실행은 되지만, 12줄에서 출력이 되지 않아요.
    즉 인풋/아웃풋이 안되는 것 같은데 어떻게 해야할까요?
    인풋의 경우엔 터미널에 숫자가 입력되지 않고 다음 코드로 넘어가지도 않는 현상이 일어납니다.

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.11.22 18:04 신고

      디버깅시 문제는 저도 방법을 알지 못합니다. 릴리즈모드때처럼 명령 프롬프트창으로 띄워서 실행할수 없어서 해결하기 힘들듯합니다

  20. Favicon of https://mybrilliantdays.tistory.com BlogIcon MyBrilliantDays 2020.11.25 17:04 신고

    여러군데 검색해보고 안되었는데, 이거 보고 한번에 성공했네요.
    감사합니다.

  21. Favicon of https://naturedeveloper.tistory.com BlogIcon natureDeveloper 2020.11.25 21:11 신고

    비주얼코드에서 c++ 돌리고 싶었는데.. 감사합니당.

+ Recent posts