ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Visual Studio Code에서 C/C++ 프로그래밍( Windows / Ubuntu)
    개발 환경/C, C++ 2019.11.17 21:13




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

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


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

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

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



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

    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을 사용해도 한글 안 깨지도록 수정




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

    1.1. Windows 


    아래 링크에서 MinGW-W64 Online Installer 항목에 있는 MinGW-W64-install.exe를 다운로드합니다. 

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





    설치시 아키텍처를 선택할 수 있습니다. 

    여기에서는 아키텍처로 i686을 선택하여 설치합니다. 이 옵션에 따라 gcc, g++, gdb 등의 설치 경로가 달라집니다. 





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





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





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





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

    경로에서 파란 부분은 64비트 아키텍처를 사용한 경우 Program Files로 변경되며

    빨간 부분은 설치한 mingw 버전에 따라 차이가 있을 수 있으니 확인해보고 진행하세요. 


    C:\Program Files (x86)\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\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. Ctrl + Shift + P를 눌러서 보이는 입력 창에 c/c++을 입력한 후, 

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




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


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




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

    공백이 포함된 경로라서 정상적으로 인식되려면 다음처럼 앞뒤에 큰따옴표를 추가해줘야 합니다. 





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

    컴파일 경로로 /usr/bin/g++을 선택합니다. 





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




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




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




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

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


    {
        "configurations": [
            {
                "name": "Win32",
                "includePath": [
                    "${workspaceFolder}/**"
                ],
                "defines": [
                    "_DEBUG",
                    "UNICODE",
                    "_UNICODE"
                ],
                "compilerPath": "\"C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/g++.exe\"",
                "cStandard": "c11",
                "cppStandard": "c++17",
                "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의 메뉴에서 터미널 > 기본 빌드 작업 구성을 선택합니다.



    5-2. 템플릿에서 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": "cd ${fileDirname} && ./${fileBasenameNoExtension}",
            // "group": "test"
            // }
            // 바이너리 실행(Windows)
            {
                "label": "execute",
                "command": "cmd",
                "group": "test",
                "args": [
                    "/C", "${fileDirname}\\${fileBasenameNoExtension}"
                ]
       
            }
        ]
    }




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


            // 바이너리 실행(Ubuntu)
            {
                "label": "execute",
                "command": "cd ${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번을 진행하세요.


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


    현재 최신 버전인 Windows 10 버전 1903(빌드 18362.295)에선 한글 깨짐현상이 없습니다.

    윈도우 버전 확인은 윈도우키 + R을 눌러 실행창에서  winver를 실행하면 확인할 수 있습니다. 



    추가로 확장만 설치하면 euc-kr로 변경하지 않고 utf8에서 한글 입력을 할 수 있습니다. 

    Qone님이 알려주셨습니다.



    확장 아이콘을 선택합니다. 




    검색창에 c++ inte를 입력하면 ausin이란 분이 만든 C++ Intellisense 확장이 보입니다. 

    Install을 클릭하여 설치하세요





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


    #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를 입력하고 




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




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





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

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

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





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

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




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



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


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

    "miDebuggerPath": "C:\\Program Files (x86)\\mingw-w64\\i686-8.1.0-posix-dwarf-rt_v6-rev0\\mingw32\\bin\\gdb.exe",


    {
        // 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}.exe",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceFolder}",
                "environment": [],
                "externalConsole": false,
                "MIMode": "gdb",
                "miDebuggerPath": "C:\\Program Files (x86)\\mingw-w64\\i686-8.1.0-posix-dwarf-rt_v6-rev0\\mingw32\\bin\\gdb.exe",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ]
            }
        ]
    }



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


    {
       // 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언어 디버깅


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






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

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

    유튜브 구 독 하 기
    후 원 하 기


    댓글 298

    • 이전 댓글 더보기
    • Progr 2019.09.20 22:34


      디버깅도 문제없이되고
      c나 cpp 파일 우클릭해서 run 누르면 출력창에 출력도 잘되는데
      excute 하면 터미널창에
      내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
      배치 파일이 아닙니다.
      가 나오면서 종료되네요 ㅠㅠ
      path설정도 다했는데 방법을 못찾겠어요

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.09.20 22:36 신고


        에러 메시지에 어떤 명령인지 언급되지 않나요?

      • Progr 2019.09.20 22:50



        ctrl+alt+c눌러서 exe파일 생성은 정상적으로되고
        그 이후에 ctrl+alt+R 눌러서 excute 하면

        > Executing task: cmd /C c:\Users\MS\Desktop\Programing\C,C++\study\vscode\hello2 <

        'c:\Users\MS\Desktop\Programing\C'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
        배치 파일이 아닙니다.
        터미널 프로세스가 종료 코드 1(으)로 종료되었습니다.


        이렇게 나옵니다

      • Progr 2019.09.20 22:51


        위에 cmd /이후에 백슬레시가 댓글로 쓰니까 몇개 지워졌는데
        터미널에서는 정상적으로 나옵니다

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.09.20 22:53 신고


        C,C++ 폴더 이름에서 콤마(,)가 인식 안되서 문제가 생긴듯합니다. 콤마를 빼고 해보세요

      • Progr 2019.09.20 22:56


        ㅠㅠㅠ정말감사합니다 됐네요
        정말 많은도움 얻어갑니다 감사합니다

    • MJForever 2019.09.20 23:56


      정말 감사합니다!
      음 그리고 디버그할때 Unable to Start debugging이 뜨면 https://github.com/Microsoft/vscode-cpptools/issues/3444 에 설명하는 대로 , 경로에 유니코드 아닌 한글등이 있는거니까 다른 폴더에 작업해 주시면 됩니다!

    • HMAlways 2019.09.22 18:48


      좋은 글 감사합니다ㅠㅠ
      설명하신대로 따라하다가 이제 컴파일을 해주었는데, 실행은 잘 되는데 .exe파일은 뜨지 않는데 제가 어디 실수한 부분이 있어서 그런걸까요?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.09.23 10:41 신고


        실행이 되면 실행파일은 생성된것입니다. 보여야 하는데 이상하군요. 윈도우 탐색기로 어디에 실행파일이 생겼는지 확인해보세요

    • Favicon of https://boomrabbit.tistory.com BlogIcon 폭발토끼 2019.09.28 23:03 신고


      안녕하세요 정말 답답해서 이렇게 글을 남깁니다 ㅠㅠㅠㅠ
      컴파일을 진행 후 ctrl + alt + r 을 눌러 execute 를 실행 하면
      결과값 ( "Hello World") 가 아닌

      터미널 프로세스가 종료 코드 1(으)로 종료되었습니다.
      라고만 뜹니다;;;;이것땜에 4시간 가까이 붙잡고 있는데 대체 어떻게 해결해야 될까요 ㅠㅠㅠ

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.09.29 09:25 신고


        5-4에서 실행부분을 확인해보세요.
        혹시 우분투에서 진행하는 거면 포스트에 나온대로 변경해야 합니다.

      • Favicon of https://boomrabbit.tistory.com BlogIcon 폭발토끼 2019.10.05 10:33 신고


        안녕하세요.다행이 필자님 조언대로 다시 해보니 실행까지 완료했습니다. 하지만 디버깅 작업에서 좀 의아한 부분이 있어서 이렇게 다시 여쭙니다.죄송합니다. 일단 launch.json 파일에 그대로 붙여넣었습니다(window 환경입니다) 그 다음에 f5를 눌러 디버깅을 하니
        위치 줄:1 문자:3
        + 12& 'c:/Users/(제이름입니다)/.vscode/extensions/ms-vscode.cpptools-0.26.0-in ...
        + ~
        식 또는 문에서 예기치 않은 '&' 토큰입니다.
        + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
        + FullyQualifiedErrorId : UnexpectedToken
        터미널에서 이렇게 빨간글씨로 뜹니다.
        일단 Mingw 와 vscode 전부 전 D드라이브에 경로를 설정해 준 상태입니다.하지만 .vscode 파일은 C드라이브에 생겼더라구요,,,이것때문에 그런건지 잘 모르겠네요,,,그리고 또한 어떠한 입력값을 받아야 하는데 디버깅을 진행하는 중에 어떻게 입력을 해줘야 되는지도 잘 모르겠습니다. 콘솔창에 입력해도 인식이 안되고 터미널에서도 안되서 난감하더라구요. 너무 감사드립니다.

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.10.05 11:56 신고


        7-5처럼 간단한 코드에서도 에러가 발생하나요?

        디버그시 입력을 하려면 launch.json 파일에서 externalConsole 항목을 다음처럼 true로 바꾸면 됩니다. 별도의 명령프롬프트 창이 뜨는데 키보드 입력시 사용하면 됩니다.

        "externalConsole": true,

      • Favicon of https://boomrabbit.tistory.com BlogIcon 폭발토끼 2019.10.05 12:03 신고


        답변 정말로 감사드립니다. 오류는 vscode를 껏다가 켰더니 사라졌네요,,왜그런지는 저도 잘 모르겠습니다.
        다만 입력부분은 글쓴이님께서 말씀해 주신 대로 해보았으나 아에 키보드가 입력이 되지 않습니다.
        #include<bits/stdc++.h>

        using namespace std;

        int main()
        {
        int a=1;
        int b=1;

        cout<<a<<b;

        cin>>a>>b;

        cout<<a<<b;
        return 0;
        }
        이런 간단한 입력인데도 터미널에 11 만 출력되고 입력을 하려고 하였으나 인식이 안되네요;;;;ㅠㅠ

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.10.05 21:44 신고


        cin>>a>>b; 대신에 cin>>a;로 해보세요..

        확인한 부분이라 될겁니다.

      • Favicon of https://boomrabbit.tistory.com BlogIcon 폭발토끼 2019.10.09 09:44 신고


        감사합니다 ㅠㅠㅠ 해결 됐습니다.vscode 너무 세팅이 복잡하지만 너무이쁘고 좋네요.글쓴이님 덕분에 좋고 쉽게 이용할 수 있겠네요 감사합니ㅏㄷ

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.10.09 17:16 신고


        다행입니다^^

    • 초보자 2019.09.30 15:19


      우분투인데 그대로 했더니 컴파일은 되네요 감사합니다.. 근데 컨트롤+알트+c해도 exe 파일은 안 만들어지네요 왜 그럴까요?

    • C입문자 2019.10.07 00:47


      안녕하세요 선생님.. 전 컴파일 진행결과와 execute 진행결과가 진행대로 안나오는데 문제가 무엇인가요??

      1. C 컴파일의 경우 (+exe 파일이 생성이 되지 않습니다.)

      > Executing task: gcc c:\Users\WIN10\C_C++_Projects\helloworld\hello.c -o c:\Users\WIN10\C_C++_Projects\helloworld/hello <

      gcc : 'gcc' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지
      않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도
      하십시오.
      위치 줄:1 문자:1
      + gcc c:\Users\WIN10\C_C++_Projects\helloworld\hello.c -o c:\Users\WIN1 ...
      + ~~~
      + CategoryInfo : ObjectNotFound: (gcc:String) [], CommandNotFoundException
      + FullyQualifiedErrorId : CommandNotFoundException

      터미널 프로세스가 종료 코드 1(으)로 종료되었습니다.

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


      2. C++ execute 실행 경우

      > Executing task: cmd /C c:\Users\WIN10\C_C++_Projects\helloworldcpp\hello <

      'c:\Users\WIN10\C_C++_Projects\helloworldcpp\hello'은(는) 내부 또는 외부 명령, 실행할 수 있는
      프로그램, 또는
      배치 파일이 아닙니다.

      터미널 프로세스가 종료 코드 1(으)로 종료되었습니다.

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

    • C입문자 2019.10.08 11:24


      안녕하세요 선생님 ㅠㅠㅠ 선생님 덕분에 해결 잘 된 것 같습니다.

      컴퓨터 비전공 공대생이라 프로그래밍 처음 입문해보는데 이것저것 애로사항이 많네요..

      앞으로 프로그램 사용하면서
      vscode 에서 launch , setting, tasks 는 삭제하지 말고 놔두면 되는 걸까요??

      아 그리고 디버깅하면서 사용한 add 파일은 삭제해도 될까요?

      또 디버깅 관련해서는 디버깅이 필수 사항인지 궁금합니다. (어떤 이점이 있는지 잘 몰라서요.. 단순히 오류 수정 정도로만 알고 있는데)

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.10.08 11:40 신고


        설정 파일은 놔두어야 합니다. 디버그 테스트에 사용한 add파일은 지우셔도 되요.

        화면에 변수 값을 출력해서도 코드의 문제를 찾을 수 있겠지만 디버깅을 알아두면 좀 더 효율적으로 코드 문제를 찾을 수 있습니다.

    • 밍밍밍밍 2019.10.10 02:42


      좋은 글 감사합니다. 덕분에 vs code로 여러 언어를 코딩할 수 있겠네요!
      다만 저는 컴파일과 터미널에 실행결과 출력까지는 잘 되는데 디버깅 시에 C++(GDB/LLDB)를 선택하면 우측 하단 창에 " '.vscode' 폴더(Cannot read property 'name' of undefined) 내에 'launch.json'파일을 만들 수 없습니다. " 라는 오류가 뜹니다.
      혹시 어떤 오류가 발생한 건지 짐작 가시는 부분이 있을까요ㅠ

      • 패트 2019.10.19 12:44


        저도 같은 오류가 뜨는데 혹시 해결 하셨나요?

      • gdb 2019.10.20 13:52


        저도 이거네요...구글링 해도 딱히 안 나오고 ㅠㅠ 아마 tasks.json에 문제가 있지 않을까 싶긴한데... 함부로 건드릴 수가 없군요

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.10.20 15:04 신고


        테스트해보니 7-3이 인식이 안되서 발생한 문제로 보입니다.

        폴더를 새로 생성하여 해보세요..

      • gdb 2019.10.20 19:50


        저도 찾아보니 왜 인식이 안되는지는 알 수가 없나보더라구요. 저희 모두 7-3에서 launch.json이 생성이 안되는 것 떄문에 여쭤봤습니다. 하지만 해결했습니다.

      • gdb 2019.10.20 20:03


        1. 일단 launch.json을 수동으로 파일생성 해주세요.
        2. 작성자님이 써주신 launch.json내용을 복붙하세요.
        3. 작성자님과 gdb.exe의 경로가 같은지 꼭 확인하세요.
        4-1. launch.json의 마지막 쯔음에 있는 preLaunchTask의 항목을 삭제해주세요.
        4-2. 혹은 항목을 삭제하는게 아니라, task.json에서 작성했던 c++ label(save and compile for C++)을 설정하셔도 됩니다. 삭제하게 되면 디버깅 전에 꼭 컴파일을 하셔야 하구요.


        재밌는 프로그래밍 되십쇼 여러분^^

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.10.20 20:52 신고


        해결방법 공유. 감사합니다.

    • 가나다라 2019.10.11 06:16


      안녕하세요.
      덕분에 수월하게 환경설정, 디버그 까지 다 되는데
      <bits/stdc++.h>파일이 include가 안됩니다.ㅠㅠㅠ
      이거때문에 거의 몇시간을 날려먹은것 같은데, 환경변수 문제인가요..?
      헤더파일 위치를 찾아보니
      C:\Program Files\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\lib\gcc\i686-w64-mingw32\8.1.0\include\c++\i686-w64-mingw32\bits 이렇게 길던데 경로에 문제가 있는건 아닌거죠? ㅠㅠ

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.10.11 16:53 신고


        어떤 오류가 나나요? 확인해보니 잘됩니다.

      • 가나다라 2019.10.11 22:46


        #include 오류가 검색되었습니다. includePath를 업데이트하세요. 이 변환 단위(C:\Users\SAMSUNG\Desktop\test\hello.cpp)에는 물결선을 사용할 수 없습니다.C/C++(1696)
        파일 소스을(를) 열 수 없습니다. "bits/stdc++.h"C/C++(1696)

        이렇게 뜨는데 문제가 없다면 제 컴퓨터 자체의 문제일까요..?
        아니면 저 헤더파일을 제가 임의로 설정해서 인클루드 하고싶다면
        경로 설정을 어떻게 하면좋을까요?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.10.12 15:08 신고


        tasks.json 파일의 args 항목에 -I <헤더파일 경로>를 추가해보세요.


        "label": "save and compile for C++",
        "command": "g++",
        "args": [
        "${file}",
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}"
        ],

      • 가나다라 2019.10.14 18:22


        번거롭게 해드려 죄송합니다..
        제가 json을 써본 적이 없어서..
        원하는 헤더파일 경로가 C:\Program Files (x86)\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\lib\gcc\i686-w64-mingw32\8.1.0\include\c++\i686-w64-mingw32\bits
        이렇게 된다면 어떻게 추가하면되는건가요..?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.10.14 19:33 신고


        다음처럼 하세요.

        "label": "save and compile for C++",
        "command": "g++",
        "args": [
        "${file}",
        "-I",
        "헤더파일 경로",
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}"

    • 곽태이 2019.10.13 11:03


      안녕하세요 컴파일 중 오류가 나서 여쭤봅니다.
      gcc : 'gcc' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습
      니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오.
      위치 줄:1 문자:1
      + gcc
      + ~~~
      + CategoryInfo : ObjectNotFound: (gcc:String) [], CommandNotFoundException
      + FullyQualifiedErrorId : CommandNotFoundException

      이 오류가 나는데요, cmd에서 gcc -v 를 실행했을 때 잘 되었고, vs code에서 새 터미널을 열어 gcc를 입력했을 땐 안되네요. 어떻게 해야 하나요 ?

      아 그리고 tasks.json 파일이 아무리 수정해도 안바뀌네요. 다시 들어오면 원래파일로 바뀌어있고 ... 이건 왜그런건가요?

    • gdb 2019.10.21 04:44


      안녕하세요! 덕분에 예쁜 vscode에서 c++놀이 잘 즐기고있는 1인 입니다.
      게시글 내용은 모두 잘 실행되었으나, 헤더파일 관련해서 질문 드립니다.
      제가 개인적으로 작성한 h파일을 include 하여 같이 컴파일 하려고 하는데, 어떤 방법으로 사용하시는지 궁금합니다.

      전 어쩔 수 없는건가 싶어서 일단, 새 터미널 열어서 powershell에서 g++ -g cpp cpp h -o exe 이런식으로 일일히 타이핑해서 결과물을 잘 만들긴 했습니다만....
      혹 tasks.json을 잘 만져서 다수의 파일을 한번에 컴파일 해줄 수 있게 하는 것도 가능한가요?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.10.21 17:29 신고


        다음처럼 헤더파일 위치를 지정해주면 될듯합니다.

        //C++ 컴파일
        {
        "label": "save and compile for C++",
        "command": "g++",
        "args": [
        "${file}",
        "-I",
        "추가할 헤더파일 위치"
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}"
        ],


        다수의 파일을 컴파일이 가능한지는 확인못해봤습니다.

        그럴경우 보통 makefile이나 cmake를 사용하는 것으로 알고 있습니다.

    • blend 2019.11.01 14:34


      혹시 우분투 18.04에서 C랑 C++ 모두 F5버튼 하나로 컴파일 > 빌드 > 실행까지 한번에 다 되게 할수도 있나요?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.11.01 16:18 신고


        F5는 Visual Studio Code에서 디버그 시작 단축키로 사용하고 있어 다른 키를 사용해야 합니다.

        단축키 하나로 컴파일과 실행을 한번에 할 수 있는지는 방법을 찾아봐야 할 듯합니다.

        현재는 컴파일 단축키를 누르면 C++ 또는 C 중 어느 것을 컴파일 할지 물어보도록 되어 있습니다.

    • C입문자 2019.11.04 12:23


      선생님 덕분에 수월하게 설치하고 잘 사용하고 있습니다 감사합니다 ^^
      다름이 아니라 C를 사용할 때 무한 루프 도중 일시정지 하는 방법이 따로 있는지 알고 싶습니다.
      이것도 컴파일과 실행 작업처럼 따로 단축키 설정을 해야할까요??

    • 2019.11.06 09:44


      안녕하세요 선생님 ! 덕분에 잘 사용하고 있습니다.
      다름이 아니라 에러 목록이 한글로 뜨는데 이걸 영어로 뜨게 하는 방법은 없을까요?
      VScode 자체 언어는 영어로 되어있고 한글을 설치한 적도 없는데
      "char" 형식의 인수가 "const char *" 형식의 매개 변수와 호환되지 않습니다."
      이런 식으로 에러가 한글로 뜨네요 ㅠㅠ

    • Qone 2019.11.08 01:12


      감사합니다. 덕분에 잘 사용중입니다.

      한글 깨짐 관련 문제에서는
      austin이라는 사람이 올린 C++ Intellisense 확장을 설치하면
      utf-8에서도 깨짐없이 잘 나옵니다.
      c++뿐만 아니라 파이썬 등등의 프로그램을 작성한다면 기본인코딩방식을 utf8로 하는것이 좋을 것 같아서 말씀드립니다.

      그리고 디버깅관련 문제에 대해서는 저도 지금 안되고 있는데
      https://github.com/microsoft/vscode-cpptools
      여기 들어가 보면 꽤 최근에 불거진 문제로 보이며
      마소 직원도 마땅한 해결책을 못 내놓고 있는 것 같습니다.

    • 안녕하세요 2019.11.11 01:28


      안녕하세요! 좋은 글 감사합니다..
      다름이 아니라, 1번 C/C++ 컴파일러 설치에서 적어주신 링크를 타고 들어가서 파일을 다운 받았는데
      첨부하신 화면과는 달리 그냥 알집 파일이 다운 됩니다.. 압축 해제하고 압축을 푼 폴더로 path 추가했는데
      cmd창에서 명령어 입력시 'gcc'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
      배치 파일이 아닙니다. 라고 나오네요.. 뭐가 문제인 걸까요..? ㅠㅠㅠㅠ

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.11.12 09:03 신고


        디폴트로 다운로드 되는게 바뀌었군요.


        아래 링크에서 MinGW-W64 Online Installer를 다운로드 받아 해보세요.

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

    • 컴파일_에러.. 2019.11.18 11:30


      안녕하세요
      계속 포스트를 읽어도 안되서 댓글을 남깁니다.
      현재 5-8을 진행중인데요.
      ctrl + alt + c를 누르고 실행하면 화면에 아래처럼
      "터미널 셸 경로 "C:\msys64\usr\bin\bash.exe"이(가) 존재하지 않습니다."
      라고 출력이 됩니다. 어떻게 해야할까요?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.11.18 19:38 신고


        포스트에 없는 내용이 에러메시지에 나온거 같은데.. 혹시 포스트와 다르게 작성한게 있는건 아닌지요?

      • 컴파일_에러... 2019.11.19 16:06


        포스트랑 똑같이 작성했는데요... 다른 포스트에 있는 거 따라해봐도 이런 식에 에러메시지가 나와서 계속 못하고 있어요

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.11.19 21:36 신고


        msys64는 포스트에서 설치를 안하고 있습니다. visual studio code와 mingw를 다시 설치해서 진행해보세요.

    • 센세 2019.11.18 16:55


      다중파일 컴파일 하려면 어떻게 하면 될까요? make 파일 만들어서 해야하나요
      터미널에 모든파일을 컴파일 해보니까 되서 현타왔습니다

    • 센세 2019.11.20 10:11


      형님꺼 opencv vscode CMakelists.txt 이 파일을 수정했더니 폴더 프로젝트 단위로 컴파일 가능해졌습니다

      cmake_minimum_required(VERSION 2.8)
      get_filename_component(ProjectId ${CMAKE_CURRENT_LIST_DIR} NAME)
      string(REPLACE " " "_" ProjectId ${ProjectId})
      project(${ProjectId} C CXX)
      set (CMAKE_CXX_STANDARD 11)
      file(GLOB SOURCES *.cpp)
      add_executable(main ${SOURCES} )

    • Joo 2019.11.21 11:50


      안녕하세요, 전문가님께 도움을 청합니다.
      급하게 실행해야할 파일이 있는데, 오류때문에 실행이 안되서 기웃거리다가 지푸라기라도 잡는 심정으로 여쭤봐요
      cmd창에서 실행하면, 오류메세지가 아래와 같이 발생합니다.
      [프로시저 시작지점_ZStrslcSt11char_traitscESalcEERSt13basic_istreamIT_T0_ES7_RNSt7_cxx1112basic_stringIS4_S5_T1_EE(를) DLL C:\Users\Joo\ga4_ver2.exe에서 찾을 수 없습니다. ]
      도움 부탁드려요,
      그리고 MinGW Installer 설치 후에, 위 페이지에서 말씀하신 1. MinGW-W64-install.exe 를 설치하는데
      설치도중에 오류가 나면서 설치가 안됩니다. 제가 뭘 잘못한걸까요? ㅜㅜ 오류메세지는 다음과 같습니다.
      [The file has been downloaded incorrectly!] 이거랑 위의 오류랑 관련이있을까요?

Designed by Tistory.