VSCode設定C語言環境

2020-08-10 10:36:05

基本步驟

要在VSCode中設定C語言環境,我們首先可能要一個VSCode(廢話),所以先下載安裝一個VSCode;
然後肯定需要相關外掛,因爲VSCode不能直接拿來寫C;
然後任何語言的程式在執行前都需要編譯,那還需要一個編譯器,很可惜VSCode外掛裏面不自帶,所以要自己下載然後設定;
最後在VSCode中進行相關設定,就可以編寫並執行C語言程式了。
 
 

下載並安裝VSCode

步驟

安裝相關外掛

下載並安裝完VSCode之後,接下來開啓VSCode,在VSCode中安裝相關外掛,這一步在VSCode的Extensions View中進行。
首先開啓VSCode,然後找到選單欄中的View,開啓後找到Extensions
在这里插入图片描述
打卡後進入如下介面,選擇這個C/C++的,然後點選install進行安裝,大概幾秒鐘就好了,安裝完成後install按鈕會變成uninstall(解除安裝):
在这里插入图片描述
 
 

安裝編譯器(MinGW-W64 GCC)

下載傳送門
進入後大概是這樣一個介面:
在这里插入图片描述
向下翻,找到下面 下麪這樣的一個介面,然後選擇合適的進行下載,我選擇的是x86_64-win32-sjlj的:
在这里插入图片描述
然後將下載完的檔案進行解壓,得到下面 下麪這樣一個資料夾:
在这里插入图片描述
然後要設定環境變數,找到這個資料夾內的一個叫bin的資料夾:
在这里插入图片描述
然後把它的地址複製一下,找到此電腦(或者我的電腦)——>右鍵——>屬性
在这里插入图片描述在这里插入图片描述
然後進入到下面 下麪這個頁面,開啓高階系統設定:
在这里插入图片描述
在彈出的頁面中選擇「高階」分頁,找到環境變數,單擊開啓:
在这里插入图片描述
然後在環境變數中的系統變數中,找到Path變數:
在这里插入图片描述
開啓之後將剛剛複製的地址新增進去:
在这里插入图片描述
然後點確定,之前彈出的所有頁面都點選確定。然後測試環境設定是否成功:
crtl+R快捷鍵開啓執行視窗,在裏面輸入cmd,回車開啓cmd.exe
在这里插入图片描述
在cmd.exe中輸入如下命令:
gcc -v -E -x c++ -
如果執行結果像下方圖片中這樣,就設定成功了。
在这里插入图片描述

設定

最後在VSCode中進行相關設定:
先新建一個資料夾作爲C語言專案檔案,然後點選選單欄中的File——>Open Folder,找到各個新建的資料夾,然後點選選擇資料夾開啓這個專案檔案。
然後在裏面新建一個hello.c檔案(名字隨便起,以.c結尾就行了)
在这里插入图片描述
然後再建一個
.vscode資料夾(注意前面有個點),在裏面建三個檔案,c_cpp_properties.json、launch.json、tasks.json

  • c_cpp_properties.json:將這段程式碼複製進去
{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceRoot}",
                "D:/Program Files (x86)/softwareFactory/x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0/mingw64/include/**",
                "D:/Program Files (x86)/softwareFactory/x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++",
                "D:/Program Files (x86)/softwareFactory/x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32",
                "D:/Program Files (x86)/softwareFactory/x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/backward",
                "D:/Program Files (x86)/softwareFactory/x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include",
                "D:/Program Files (x86)/softwareFactory/x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include-fixed",
                "D:/Program Files (x86)/softwareFactory/x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/include"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "__GNUC__=6",
                "__cdecl=__attribute__((__cdecl__))"
            ],
            "intelliSenseMode": "msvc-x64",
            "browse": {
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": "",
                "path": [
                    "${workspaceRoot}",
                    "D:/Program Files (x86)/softwareFactory/x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0/mingw64/include/**",
                    "D:/Program Files (x86)/softwareFactory/x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++",
                    "D:/Program Files (x86)/softwareFactory/x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32",
                    "D:/Program Files (x86)/softwareFactory/x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/backward",
                    "D:/Program Files (x86)/softwareFactory/x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include",
                    "D:/Program Files (x86)/softwareFactory/x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include-fixed",
                    "D:/Program Files (x86)/softwareFactory/x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/include"
                ]
            }
        }
    ],
    "version": 4
}

然後,下方紅框裡的內容需要修改,將所有的 改爲自己的安裝路徑,就是我們之前下載的編譯器的地址:
在这里插入图片描述
把你的MinGW-W64 GCC解壓後的檔案中的mingw64的地址複製下來,替換程式碼裡所有的 D:/Program Files (x86)/softwareFactory/x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0/mingw64/ :
在这里插入图片描述
如果還沒看懂是哪個,那麼看看上面圖片裡這個叫bin的資料夾,是不是很眼熟
在这里插入图片描述

  • launch.json:複製貼上,然後miDebuggerPath屬性裡的內容也要改,和上面的那個 c_cpp_properties.json一樣的道理。
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch", // 設定名稱,將會在啓動設定的下拉式選單中顯示
            "type": "cppdbg", // 設定型別,這裏只能爲cppdbg
            "request": "launch", // 請求設定型別,可以爲launch(啓動)或attach(附加)
            "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe", // 將要進行偵錯的程式的路徑
            "args": [], // 程式偵錯時傳遞給程式的命令列參數,一般設爲空即可
            "stopAtEntry": false, // 設爲true時程式將暫停在程式入口處,一般設定爲false
            "cwd": "${workspaceFolder}", // 偵錯程式時的工作目錄,一般爲${workspaceRoot}即程式碼所在目錄 workspaceRoot已被棄用,現改爲workspaceFolder
            "environment": [],
            "externalConsole": true, // 偵錯時是否顯示控制檯視窗,一般設定爲true顯示控制檯
            "MIMode": "gdb",
            "miDebuggerPath": "D:/Program Files (x86)/softwareFactory/x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0/mingw64/bin/gdb.exe", // miDebugger的路徑,注意這裏要與MinGw的路徑對應
            "preLaunchTask": "gcc", // 偵錯對談開始前執行的任務,一般爲編譯程式,c++爲g++, c爲gcc
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": false
                }
            ]
        }
    ]
}
  • tasks.json:複製貼上
{
    "version": "2.0.0",
    "command": "gcc",
    "args": [
        "-g",
        "${file}",
        "-o",
        "${fileBasenameNoExtension}.exe"
    ], // 編譯命令參數
    "problemMatcher": {
        "owner": "cpp",
        "fileLocation": [
            "relative",
            "${workspaceFolder}"
        ],
        "pattern": {
            "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
            "file": 1,
            "line": 2,
            "column": 3,
            "severity": 4,
            "message": 5
        }
    }
}

然後就可以在之前建的hello.c檔案裏面寫程式啦,比如我們熟悉的hello world:

#include<stdio.h>
int main()
{
    printf("hello world\n");
    return 0;
}

程式閃退問題

執行之後有可能發現,彈出了個黑框,然後馬上閃退掉了。
一篇寫得不錯的解決方案
還有一種解決方法,如果有return語句的,在return語句前加,沒有return語句的在末尾加:

system("pause");

它會跳出一條「請按任意鍵繼續」的輸出,按下鍵盤按鍵後繼續執行程式。執行結果:
在这里插入图片描述