1. 程式人生 > >VS Code C語言環境配置

VS Code C語言環境配置

最近重溫C語言,因為很多練習只是小程式,並不需要Clion和Codeblocks這樣工程導向的編譯軟體,所以下載了vs code,並試圖搜尋相應的環境,在此過程中發現,網上許多vs code 的c/c++環境配置都是以c++為目標的,不能直接編譯C語言,在參考了許多前輩的文章後,才有了本文,如有不妥之處,還望各位前輩海涵。

0.參考資料

https://blog.csdn.net/bat67/article/details/76095813

https://hk.saowen.com/a/9598540e9e5ae7838bdd78c4cd6a19ffb167f374c811e92fdf0e595b71ad13db

1.安裝編譯器

2.安裝VS code

3.安裝外掛

4.配置編譯檔案

launch.json

請注意,這一條請務必填寫你自己的路徑,讓編譯器找到gdb.exe。
"miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe", // miDebugger的路徑,注意這裡要與MinGw的路徑對應
{
    // 使用 IntelliSense 瞭解相關屬性。 
    // 懸停以檢視現有屬性的描述。
    // 欲瞭解更多資訊,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",  
        "configurations": [  
            {  
                "name": "C Launch (GDB)", // 配置名稱,將會在啟動配置的下拉選單中顯示  
                "type": "cppdbg",       // 配置型別,這裡只能為cppdbg  
                "request": "launch",    // 請求配置型別,可以為launch(啟動)或attach(附加)
                //"launchOptionType": "Local", // 偵錯程式啟動型別,這裡只能為Local
                "targetArchitecture": "x86", // 生成目標架構,一般為x86或x64
    
                "program": "${cwd}\\${fileBasenameNoExtension}.exe",// 將要進行除錯的程式的路徑  
                "args": [],             // 程式除錯時傳遞給程式的命令列引數,一般設為空即可  
                "stopAtEntry": false,   // 設為true時程式將暫停在程式入口處,一般設定為false  
                "cwd": "${workspaceRoot}", // 除錯程式時的工作目錄,一般為${workspaceRoot}即程式碼所在目錄  
                "environment": [],  
                "externalConsole": true, // 除錯時是否顯示控制檯視窗,一般設定為true顯示控制檯  
                "MIMode": "gdb",  
    
                "miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe", // miDebugger的路徑,注意這裡要與MinGw的路徑對應  
                
                "preLaunchTask": "gcc", // 除錯會話開始前執行的任務,一般為編譯程式,c++為g++, c為gcc  
                "setupCommands": [  
                    {
                        "description": "Enable pretty-printing for gdb",  
                        "text": "-enable-pretty-printing",  
                        "ignoreFailures": true  
                    }  
                ]  
            }  
        ]  
    }

tasks.json

{
    "version": "2.0.0",
    "command": "gcc",  // 編譯C++用g++,用MinGW和clang的自行修改。
    "args": ["${file}", "-o", "${fileBasenameNoExtension}.exe", "-g3", "-Og", "-Wall", "-static-libgcc", "-std=c11", "-fexec-charset=GBK", "-finput-charset=UTF-8"],  // 編譯命令引數,C++可用-std=c++14
    "problemMatcher": {
        "owner": "c",
        "fileLocation": ["relative", "${workspaceRoot}"],
        "pattern": {
            "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
            "file": 1,
            "line": 2,
            "column": 3,
            "severity": 4,
            "message": 5
        } 
    }
}

c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "C:\\MinGW\\bin\\gcc.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}

settings.json(該項是用於無縫切換C語言和c++的,但是博主現在沒有搞懂,而且直接照搬前輩的配置會導致報錯,暫時不建議新增此配置檔案)

// 將設定放入此文件中以覆蓋預設值和使用者設定。
{
    "files.defaultLanguage": "c",
    "code-runner.runInTerminal": false,
    "code-runner.executorMap": {
    "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt -Wall -g3 -Og -static-libgcc -std=c11 && $dir$fileNameWithoutExt",
    "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt -Wall -g3 -Og -static-libgcc -std=c++14 && $dir$fileNameWithoutExt"
    }
}

5.大功告成