VS Code は C/C++ 開発環境を構成します

1. ソフトウェアのダウンロード

ダウンロードが必要なソフトウェアは以下のとおりです。

  • VSコード
  • コンパイルツール: MinGW または MSYS2 または VS2022

VS Code のダウンロード アドレス:リンク
MinGW のダウンロード アドレス:リンクまたはリンク
MSYS2 のダウンロード アドレス:リンク
VS2022 のダウンロード アドレス:リンク

上記のソフトウェアをダウンロードした後、インストール手順を実行しますが、コンパイル ツールとして MinGW を選択することをお勧めします。MinGW をインストールすると GCC コンパイラが、VS2022 をインストールすると MSVC コンパイラが使用できます。

2. 環境構築

1. 環境変数を追加する

のフォルダーMinGWをシステムの環境変数に追加します次のコードをコマンド ラインで実行し、エラー プロンプトが表示されない場合、サーフェスは正常に追加されています。binPATH

gcc --version
g++ --version
gdb --version

出力は次のとおりです。
ここに画像の説明を挿入

2. VS Code プラグインをインストールする

次の 3 つのプラグインをインストールする必要があります。

  • C/C++
  • C/C++ 拡張パック
  • Atom One Dark テーマ (オプション、コードテーマカラー用)

ここに画像の説明を挿入

3. コンパイラパラメータ

1.GCC

パラメータ 説明する
-c ソース ファイルのコンパイルのみを行い、オブジェクト ファイルを生成し、リンクは行いません。
-o 出力ファイルの名前を指定します -o build\${fileBasenameNoExtension}.exe
-I <パスを含める> ヘッダーファイルの検索パスを追加 -I ${workspaceFolder}/include
-L <ライブラリパス> ライブラリファイルの検索パスを追加 -L ${workspaceFolder}/lib
-l <ライブラリ名> 指定したライブラリファイルをリンクします -lgdi32
-g デバッグ情報の生成
-std= 使用される言語標準を指定します -std=c11、-std=c++14
-O 最適化レベルを指定します。レベルは 0、1、2、3、s です。
-壁 すべての警告を表示
-エラー 警告をエラーとして扱う
-pthread マルチスレッドのサポートを有効にする
-lm 数学ライブラリへのリンク
-mwindows コンソールウィンドウを削除する

2.MSVC

パラメータ 説明する
/c ソース ファイルのみをコンパイルし、リンクして実行可能ファイルを生成しないでください。
/EHsc C++ 例外処理サポートを有効にする
/Fo+パス 中間ファイルのパスを指定します /Fo${workspaceFolder}\build\${fileBasenameNoExtension}.obj
/Fe+パス 対象ファイルのパスを指定する /Fe${workspaceFolder}\build\${fileBasenameNoExtension}.exe
/私 インクルードファイルディレクトリを追加
/D+名前[=値] 前処理マクロを定義する
/W 警告レベルを設定する
/O 最適化レベルを設定する
/日 デバッグ情報の生成
/MD 動的にリンクされたランタイム ライブラリの使用
/MT ランタイム ライブラリとマルチスレッドを静的にリンクする
/リンク リンカーオプションを渡す
/P 前処理された出力を生成する
/showincludes 含まれているファイルを表示する
/? ヘルプ情報を表示する

4. 設定ファイル

記事のリンクを参照して
VS Code で C/C++ コードを実行したり、構成ファイルを使用してヘッダー ファイル パス、ライブラリ ファイル パス、コンパイラ パスなどを指定したりできます。構成ファイルは自動生成または手動で構成できますが、ほとんどの場合、自動生成された構成ファイルでは要件を満たせないことが多いため、手動で構成する必要が高くなります。これには主に、 、 の 3 つの設定ファイルが含まれておりc_cpp_properties.json3つの設定ファイルの機能は次のとおりです。tasks.jsonlaunch.json

  • c_cpp_properties.json: コード分析と IntelliSense が正常に動作するように、C/C++ 拡張機能のコンパイラ パスとヘッダー ファイル検索パスを構成します。
  • tasks.json: エディターで実行される実行タスク、カスタム コマンド、またはスクリプトを構成します。
  • launch.json: デバッガーの起動およびデバッグ設定を構成します。

1. 基本構成

c_cpp_properties.json

{
    
    
    "configurations": [
        // 32{
    
    
            "name": "Win32", // 当前配置的名称
            "includePath": [
                "${workspaceFolder}/**",
                "D:\\C\\VS2022\\Community\\VC\\Tools\\MSVC\\14.35.32215\\include" // 编译器的头文件路径
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            // 此处是你的 Windows SDK 版本号
            "windowsSdkVersion": "10.0.20348.0",
            // 此处是编译器的地址
            "compilerPath": "D:\\C\\VS2022\\Community\\VC\\Tools\\MSVC\\14.35.32215\\bin\\Hostx64\\x86\\cl.exe",
            "cStandard": "c17", // C 标准 
            "cppStandard": "c++17", // C++ 标准
            "intelliSenseMode": "windows-msvc-x86" // 智能感知的模式
        },
        // x64位
        {
    
    
            "name": "x64",
            "includePath": [
                "${workspaceFolder}/**",
                "D:\\C\\VS2022\\Community\\VC\\Tools\\MSVC\\14.35.32215\\include" // 编译器的头文件路径
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            // 此处是你的 Windows SDK 版本号
            "windowsSdkVersion": "10.0.20348.0",
            // 此处是编译器的地址
            "compilerPath": "D:\\C\\VS2022\\Community\\VC\\Tools\\MSVC\\14.35.32215\\bin\\Hostx64\\x64\\cl.exe",
            "cStandard": "c17", // C 标准 
            "cppStandard": "c++17", // C++ 标准
            "intelliSenseMode": "windows-msvc-x64" // 智能感知的模式
        }
    ],
    "version": 4
}

tasks.json

{
    
    
    "tasks": [
        {
    
    
            "label": "MSVC编译",
            "type": "shell",
            "command": "cmd.exe",
            "args": [
                "/c",
                // 编译器地址
                "D:\\C\\VS2022\\Community\\VC\\Auxiliary\\Build\\vcvars32.bat && cl.exe",
                "main.cpp",
                "/Zi",
                "/Od",
                "/EHsc",
                // 中间文件生成目录
                "/Fo${workspaceFolder}\\build\\${fileBasenameNoExtension}.obj", 
                // 目标文件生成目录
                "/Fe${workspaceFolder}\\build\\${fileBasenameNoExtension}.exe", 
            ],
            "options": {
    
    
                "cwd": "${workspaceFolder}" // 作为当前打开目录
            },
            "problemMatcher": [
                "$msCompile"
            ],
            "group": "build",
            "detail": "Task generated by Debugger."
        },
    ],
    "version": "2.0.0"
}

launch.json

{
    
    
    "version": "0.2.0",
    "configurations": [
        {
    
    
            "name": "C/C++: gcc.exe 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}\\build\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\A\\MinGW64\\bin\\gdb.exe", //此处为你的gdb.exe路径
            "setupCommands": [
                {
    
    
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
    
    
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "MSVC编译"
        }
    ]
}

2. ファイルタスク構成の削除

{
    
    
 "label": "删除中间文件",
 "type": "shell",
 "command": "cmd.exe",
 "args": [
     "/c",
     "del",
     "${workspaceFolder}\\build\\*.obj",  	// 删除build文件夹下的所有.obj文件
     "${workspaceFolder}\\build\\*.ilk",	// 删除build文件夹下的所有.ilk文件
     "${workspaceFolder}\\*.pdb",      		// 删除工作空间下的所有.pdb 文件
 ],
 "group": "build",
},

3. コンパイル、削除、実行

次のtasks.json構成ファイルが順番に実行されます: ソース ファイルのコンパイル、中間ファイルの削除、実行可能ファイルの操作の実行。

{
    
    
    "tasks": [
        // MSVC编译
        {
    
    
            "label": "MSVC编译",
            "type": "shell",
            "command": "cmd.exe",
            "args": [
                "/c",
                "D:\\C\\VS2022\\Community\\VC\\Auxiliary\\Build\\vcvars32.bat && cl.exe",
                "main.cpp",
                "/Zi",
                "/Od",
                "/EHsc",
                // 中间文件生成目录
                "/Fo${workspaceFolder}\\build\\${fileBasenameNoExtension}.obj", 
                 // 目标文件生成目录
                "/Fe${workspaceFolder}\\build\\${fileBasenameNoExtension}.exe",
            ],
            "options": {
    
    
                "cwd": "${workspaceFolder}" // 作为当前打开目录
            },
            "problemMatcher": [
                "$msCompile"
            ],
            "group": "build",
            "detail": "Task generated by Debugger."
        },
        // 删除中间文件
        {
    
    
            "label": "删除中间文件",
            "type": "shell",
            "command": "cmd.exe",
            "args": [
                "/c",
                "del",
                "${workspaceFolder}\\build\\*.obj",
                "${workspaceFolder}\\build\\*.ilk",
                "${workspaceFolder}\\*.pdb",
            ],
            "group": "build",
            "dependsOn": [
                "MSVC编译",
            ]
        },
        // RUN
        {
    
    
            "label": "RUN",
            "type": "shell",
            "command": "cmd.exe",
            "args": [
                "/c echo. && echo. && echo. && echo. && echo. && echo ================================================================================ && .\\build\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
    
    
                "cwd": "${workspaceFolder}"
            }, // 作为当前打开目录
            "group": {
    
    
                "kind": "build",
                "isDefault": true
            },
            "dependsOn": [
                "删除中间文件",
            ]
        },
    ],
    "version": "2.0.0"
}

5. 問題解決

1. コード実行コンソールのフラッシュバックの問題を解決する

方法 1ファイル内のパラメータ値を次のように
変更します。launch.jsonexternalConsolefalse

"externalConsole":false

方法 2
メイン プログラムの最後に追加します。system("pause");
方法 3
メイン プログラムの最後に追加します。getchar();

2. コード化けの解決策

方法 1
ヘッダー ファイル <windows.h> を追加し、API 関数 SetConsoleOutputCP(65001) を呼び出します。
ここに画像の説明を挿入
方法 2
VScode のエンコード形式を GBK に変更するか、ソース コード ファイルをメモ帳で開き、ANSI エンコード形式で保存します。
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
方法3
VScodeのsetting.json設定ファイルを変更し、1つのエンコード形式に統一します。
ここに画像の説明を挿入
方法 4
Windows (中国語) のデフォルトの文字セットは Windows-936 (GBK) であり、GCC コンパイラはデフォルトでコンパイル時に UTF-8 に従って解析します。文字セットが指定されていない場合は、UTF-8 として扱われます。 8なので文字化けが発生します。そこで、GCCでコンパイルする際に以下のパラメータを追加することで解決できます。

-fexec-charset=gbk
-finput-charset=gbk

おすすめ

転載: blog.csdn.net/hfy1237/article/details/130781012