関連する推奨事項: 「vscode 基本チュートリアル 」
## 0 . はじめにこの記事は初心者向けであり、各手順が詳しく説明されています。この記事を読んで、コマンド ライン、プログラムのコンパイルとデバッグ、VS Code の使用に関する知識を学びましょう。この記事が面倒だと思われる場合は、簡略化したバージョンを提供します。gcc および c/c 拡張機能をインストールし、フォルダーを開き、ソース コードを開くをクリックして F1 キーを押し、アクティブなファイルをビルドしてデバッグして完了です。 この記事の多くの内容は、公式 VS Code ドキュメント:
Visual Studio Code を使用した C プログラミング および各拡張機能のドキュメントから入手でき、これらも更新されます (この記事はメジャー アップデートも数回公開されています)。詳しく知りたい場合は、チェックしてください。この記事は基本的に何度も試みた結果ですので、間違いがあればご指摘ください。
最終効果: コンパイル段階でのエラー、コード スニペット、補完、フォーマット、単一ファイルのコンパイル、デバッグのリアルタイム表示。 1. 環境の準備VSC の公式 Web サイト、ダウンロード、インストールについては詳しく説明しません。 VSC は単なるプレーン テキストのeditor(エディタ) であり、IDE (統合開発環境) ではありません。compiler(コンパイラ) やその他の多くの機能は含まれていないため、コンパイラはご自身で取り付けてください。
コンパイラをダウンロードします:MinGW-w64 - 32 ビットおよび 64 ビット Windows 用 少し下にスクロールして、最新バージョンの x86_64-posix-seh を選択します。
最新バージョンのダウンロードは使用しないことをお勧めします。これはオンライン インストール パッケージです。国内の「ネットワーク環境」によってはダウンロードに失敗する場合があります。ブラウザがダウンロードに失敗した場合は、Thunder 経由でダウンロードするか、携帯電話のホットスポットに接続してみてください。それでも失敗する場合は、Google にアクセスできる方法を使用してください。 「インストール」コンパイラ: 7z 圧縮パッケージが提供されます。解凍方法がわからない場合は、Baidu で「圧縮パッケージの解凍方法」を検索してください。解凍後、簡単に削除されない場所に保管し、重なっているファイルの一部を削除してください。 bin フォルダーのフル パスについては楽観的であり、私の図では C:\mingw64\bin であり、それを環境変数の PATH に追加します。この手順の実行方法がわからない場合は、この記事の最後にある「B. 環境変数を追加する方法」を参照してください (このページでは Ctrl F で検索できます)
Debian Linux で使用する
sudo apt update; sudo apt install build-essential で十分です。
##順序は重要ではありません。パスは異なっていてもかまいません。とにかく、gcc.exe がそのフォルダーにあることを確認してください。
入力ファイルがありませんgcc -v と入力して、gcc のバージョンを表示します。表示されたバージョンがダウンロードしたばかりの
と異なるか古い場合は、Path に古いバージョンのコンパイラが存在し、別の IDE をインストールすることによってインストールされた可能性があることを意味します。 Path 内の元の gcc パスを削除する必要があります。これら 2 つの検証は
に準拠する必要があります。そうでない場合は、環境変数を変更する必要があります。 を誤って削除しないように注意してください。 拡張機能のインストール
補足知識
; 「ワークスペース フォルダーの追加」を選択しないことをお勧めします。これは仮想ワークスペースです。私は使用したことがないため、保証できません。大丈夫でしょう。クリックして、.vscode という名前の新しいフォルダーを作成します。リソース管理で新しいフォルダーを作成しない理由は、Windows エクスプローラーでは、作成されたフォルダーの最初の文字をドットにすることができないためです (1903 以降でサポートされています)。次に、launch.json、tasks.json、settings.json ( は settings.json
ではありません) を作成し、
に配置します。レンダリング: これらのファイルの内容は次のとおりです。以下のコードをコピーすると、Zhihu がコードの前に「すべての権利は留保されています」という内容の行が自動的に追加されますので、実際に使用する場合は削除する必要があります。任意で変更できる箇所もあるので、コメントを参考に自分で調べてください。注: C で記述する場合は、tasks.json の一部を変更する必要があります。 externalConsole は独自の設定に従って変更できます。cwd はプログラム実行時の相対パスで、# に変更できます。 ##${必要に応じて fileDirname} (ありがとう @xhx)。私は lldb を使用したことがないので、多くは言いません。タイプと色を変更しないように要求するのは正常です。 launch.json コード
// https://code.visualstudio.com/docs/cpp/launch-json-reference
{
"version": "0.2.0",
"configurations": [{
"name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,cppdbg对应cpptools提供的调试功能;可以认为此处只能是cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,相当于在main上打断点
"cwd": "${workspaceFolder}", // 调试程序时的工作目录,此为工作区文件夹;改成${fileDirname}可变为文件所在目录
"environment": [], // 环境变量
"externalConsole": true, // 使用单独的cmd窗口,与其它IDE一致;为false时使用内置终端
"internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧?
"MIMode": "gdb", // 指定连接的调试器,可以为gdb或lldb。但我没试过lldb
"miDebuggerPath": "gdb.exe", // 调试器路径,Windows下后缀不能省略,Linux下则不要
"setupCommands": [
{ // 模板自带,好像可以更好地显示STL容器的内容,具体作用自行Google
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "Compile" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
}]
}
https://github.com/microsoft/MIEngine/pull/1025修理に来ましたが、1か月経ってもレビューはなく、否定的なレビューでした。
tasks.json コードが C で書かれている場合、コンパイラを g に変更する必要があります。追加の警告を表示したくない場合は、-Wall を削除してください。 one; -std 必要に応じて変更してください。ただし、c 17 には問題があるようです。せいぜい c 14 を使用するのが最善です。Linux では -fexec-charset を追加する必要はありません。とにかく、コメントを追加しましたが、それでも理解できません。Baidu gcc の使い方チュートリアルです。
reveal は、コンパイル中に端末パネルにジャンプするかどうかを制御します。好みに応じて変更できます。「なし」に設定されていても、自動的にジャンプすることはなく、手動でクリックすることで情報を表示できます。// https://code.visualstudio.com/docs/editor/tasks { "version": "2.0.0", "tasks": [{ "label": "Compile", // 任务名称,与launch.json的preLaunchTask相对应 "command": "gcc", // 要使用的编译器,C++用g++ "args": [ "${file}", "-o", // 指定输出文件名,不加该参数则默认输出a.exe,Linux下默认a.out "${fileDirname}/${fileBasenameNoExtension}.exe", "-g", // 生成和调试有关的信息 "-m64", // 不知为何有时会生成16位应用而无法运行,加上此条可强制生成64位的 "-Wall", // 开启额外警告 "-static-libgcc", // 静态链接libgcc,一般都会加上 "-fexec-charset=GBK", // 生成的程序使用GBK编码,不加这条会导致Win下输出中文乱码;繁体系统改成BIG5 // "-std=c11", // 要用的语言标准,根据自己的需要修改。c++可用c++14 ], // 编译的命令,其实相当于VSC帮你在终端中输了这些东西 "type": "process", // process是把预定义变量和转义解析后直接全部传给command;shell相当于先打开shell再输入命令,所以args还会经过shell再解析一遍 "group": { "kind": "build", "isDefault": true // 不为true时ctrl shift B就要手动选择了 }, "presentation": { "echo": true, "reveal": "always", // 执行任务时是否跳转到终端面板,可以为always,silent,never。具体参见VSC的文档 "focus": false, // 设为true后可以使执行task时焦点聚集在终端,但对编译C/C++来说,设为true没有意义 "panel": "shared" // 不同的文件的编译信息共享一个终端面板 }, "problemMatcher":"$gcc" // 捕捉编译时终端里的报错信息到问题面板中,修改代码后需要重新编译才会再次触发 // 本来有Lint,再开problemMatcher就有双重报错,但MinGW的Lint效果实在太差了;用Clang可以注释掉 }] }
Win7default) が使用されている場合は、それをコメント アウトするか、terminal.integrated.shell.windows を PowerShell に変更する必要があります。Win10 のデフォルトは PS なので、その必要はありません。変えられる。
@Wellin Boss にスニペットの提案を記載していただきありがとうございます。ただし、top の使用にはまだいくつかの問題があるため、オプションに変更されています。
{ "files.defaultLanguage": "c", // ctrl+N新建文件后默认的语言 "editor.formatOnType": true, // 输入分号(C/C++的语句结束标识)后自动格式化当前这一行的代码 "editor.suggest.snippetsPreventQuickSuggestions": false, // clangd的snippets有很多的跳转点,不用这个就必须手动触发Intellisense了 "editor.acceptSuggestionOnEnter": "off", // 我个人的习惯,按回车时一定是真正的换行,只有tab才会接受Intellisense // "editor.snippetSuggestions": "top", // (可选)snippets显示在补全列表顶端,默认是inline "code-runner.runInTerminal": true, // 设置成false会在“输出”中输出,无法输入 "code-runner.executorMap": { "c": "gcc '$fileName' -o '$fileNameWithoutExt.exe' -Wall -O2 -m64 -lm -static-libgcc -std=c11 -fexec-charset=GBK && &'./$fileNameWithoutExt.exe'", "cpp": "g++ '$fileName' -o '$fileNameWithoutExt.exe' -Wall -O2 -m64 -static-libgcc -std=c++14 -fexec-charset=GBK && &'./$fileNameWithoutExt.exe'" // "c": "gcc $fileName -o $fileNameWithoutExt.exe -Wall -O2 -m64 -lm -static-libgcc -std=c11 -fexec-charset=GBK && $dir$fileNameWithoutExt.exe", // "cpp": "g++ $fileName -o $fileNameWithoutExt.exe -Wall -O2 -m64 -static-libgcc -std=c++14 -fexec-charset=GBK && $dir$fileNameWithoutExt.exe" }, // 右键run code时运行的命令;未注释的仅适用于PowerShell(Win10默认)和pwsh,文件名中有空格也可以编译运行;注释掉的适用于cmd(win7默认)、PS和bash,但文件名中有空格时无法运行 "code-runner.saveFileBeforeRun": true, // run code前保存 "code-runner.preserveFocus": true, // 若为false,run code后光标会聚焦到终端上。如果需要频繁输入数据可设为false "code-runner.clearPreviousOutput": false, // 每次run code前清空属于code runner的终端消息,默认false "code-runner.ignoreSelection": true, // 默认为false,效果是鼠标选中一块代码后可以单独执行,但C是编译型语言,不适合这样用 "code-runner.fileDirectoryAsCwd": true, // 将code runner终端的工作目录切换到文件目录再运行,对依赖cwd的程序产生影响;如果为false,executorMap要加cd $dir "C_Cpp.clang_format_sortIncludes": true, // 格式化时调整include的顺序(按字母排序) }
このファイルを作成する必要はありません, cpptools デフォルト設定が自動的に使用されます。したがって、この記事にはこのファイルの構成は含まれなくなりました。
ヘッダー ファイルを自分で作成し、それが workspaceFolder の下にない場合、または他の人のライブラリを使用している場合は、このファイルを手動で作成し、.vscode の下に置く必要があります。テンプレートについては、
Microsoft/vscode-cpptools を参照してください。
この json ではコメントが許可されません。実際、json 標準によれば、コメントを含めることはできません。 ファイルとして使用されます。 VSC とさまざまな拡張機能は、json 内のエントリを読み取り、特定の機能と動作を決定します。 これほど多くのエントリーはどこから来たのでしょうか?これは実際には API に似ています。拡張機能の開発者は、各拡張機能のインストール ページに記載されている、変更を許可するオプションを VSC に「指示」します。ユーザーとして、VSC は入力時に利用可能なものを表示するため、実際には非常に簡単に作成できます。 なぜこれほど多くのことを json に書き込む必要があるのでしょうか?なぜなら、VSC 自体は C 言語や他の多くの言語を特別に扱っていないからです。そして最も重要なコンパイル コマンドは VSC とは関係なく、上記のエディターとコンパイラーの問題です。 VSC は C 言語をコンパイルする責任を負いません、コンパイルできません。 $ で始まる変数は VSC 事前定義変数です。詳細については、「変数リファレンス」を参照してください。たとえば、$file は、実際の操作中に現在開いているファイル名に置き換えられます。 新しいファイルを作成した後にコードを作成できます。C 言語のソース コードの接尾辞は .c で、c は .cpp または .C または.cxx (これ、私にも教えてほしいですか...)。コード ファイルはワークスペースに保存できます。独自のフォルダーを作成できます。 を .vscode フォルダー に配置する必要はありませんが、 パス (ファイル名を含む) に中国語を含めることはできません文字と引用符 、できればスペースは含まないでください。主な理由は、多くのシンボルが有効なシェル構文であるためです。そうでない場合は、Linux で rm を使用して -rf というファイルを削除してみてください。確認しないと絶対に書けません。 Alt Shift F を押して (または右クリック メニューを使用して) コードを書式設定します。中かっこを新しい行で折り返すかどうかなど、書式設定方法を変更するには、次の情報を参照してください: Format C VSCode の同じ行に中かっこがある。 Intellisense が表示されたら タブを押してコードを完成させます。スニペットを入力すると、複数のジャンプ ポイントが表示されます。Tab キーを押して次のジャンプ ポイントにジャンプします。 短時間 (1 秒) 入力を停止すると、Lint が表示されます。拡張機能は、いくつかの示唆的な警告 (変数を宣言しているが使用していないなど) を表示します。自分で明確にしてください。 。不快に感じた場合は、プロンプトが表示されないようにする方法があります。たとえば、-Wall を削除するとプロンプトの数が減ります。さらに警告を削除したい場合は、次のことを思い出させてください: -Wno-....パラメータを見つけたら、 サポート「デバッグなしで実行」 · 問題 #1201 · microsoft/vscode-cpptools f5 を使用しないことを強くお勧めします。コンパイラ。一部のバグは警告を生成するだけでコンパイルを妨げないためですが、これらの問題は早期に解決されるほど良いでしょう。コンパイル情報は、下部の「ターミナル」パネルに表示されます。コードにエラーがある場合は、それをクリックしてコンパイラによって報告される情報を確認します。ただし、Lint のおかげで、一般的なエラーはすぐに発見され、修正されます。コードを書くのがずっと簡単になります。 launch.jsonに設定があります。デバッグを開始した後、f11 を押して段階的に進みます。矢印で示されたコード行は 次に実行されるコード です。f5 は次のブレークポイントまで実行されます。コード行を右クリックして、指定した行まで常に実行することを選択します。 特に配列の場合: C言語の配列は関数で渡されるとポインタに縮退してしまうため、式を直接追加すると最初の要素しか表示されません。この時点で、固定サイズの配列ポインターに強制的に変換してから逆参照することができます。たとえば、 ショートカット キー: vscode: Visual Studio Code の一般的なショートカット キー - Zhiwen Studio。もちろん英語ドキュメントにはショートカットキーの説明もあり、Cheet Sheetも表示でき、英語ドキュメントも更新されます。これは初心者向けにのみ個別にリストされています。 エラーが発生した場合は、まず以下の「考えられるエラー」とコメント領域を読んでください。 デバッグする必要がない場合は、直接右クリックしてコードの実行を選択するか、右上隅の再生ボタンをクリックします。ターミナルで実行するとデータの入力はできますが、時刻を表示する機能はなく、「出力」では上記2つの項目が逆になります。 ターミナルで Ctrl C を押してプログラムを終了します。次回実行する前に、現在のプログラムが終了していることを確認する必要があります (タスクについても同様です)。コピーする場合は内容を選択した状態で右クリック、貼り付ける場合は選択されていない状態で右クリック、この操作はWin10限定、ctrl cでもコピーできますが、プログラムが誤って終了する可能性があります。 ワークスペース以外でプログラムをコンパイルして実行するために使用することもできますが、executorMap がグローバル設定に配置されていない限り、デフォルトで gcc が使用されます。私の構成によれば、タスクとコードランナーの間には作業ディレクトリという違いが 1 つあります。前者は開いたフォルダー、後者はファイルが存在するフォルダーです。もちろん、自分で変更することも可能です。 実際のところ、コード ランナーはコマンド の手動入力を置き換えるだけであり、その機能は強力ではありません。さまざまなシナリオに適用できます。 Hello World を実行するためのコードを実行するのは簡単で、Code Runner は非常に強力で、以前の構成はすべて無駄であるとは考えないでください。 さらに、階下の回答者である Han Jun はこの拡張機能の作成者です。ご質問がある場合は、彼に連絡してください (面白い)。 少量の複数ファイルのコンパイルを実行する場合は、C 言語を直接使用します 複数のファイルのコンパイルを大量に実行したい場合は、makefile の作成方法を学ぶか、cmake を使用してください。次に、タスク コマンドを make (または mingw32-make) などを呼び出すように変更します。 ffmpeg などの他の人のライブラリを使用したい場合は、 このような場合は、別のワークスペースを構築し、それを単一ファイルのコンパイルで共有しないことを検討できます。実際、新しいプロジェクトを作成せずに 1 つのファイルだけをデバッグすることは、将来的に大規模な IDE を使用したり理解したりするのには役立ちません。ただし、初心者はそこまでマスターする必要はありません、プロジェクトのビルドが面倒だと思わないでください、プロジェクトをビルドしなくても十分にコンパイルできます。 要するに、これらは VSC とは関係ありません。他の IDE を使用する場合や、手動でコンパイルする場合も同様の問題が発生しますが、これも少し複雑です。この記事ではこれらについては詳しく説明しません。これらについては自分で解決します。 後でコードを記述するときは、以前に作成したフォルダーを開いて書き込む必要があります。そうしないと、すべての Intellisense が失われ、Code Runner のみが使用できるようになります。 。 (主にこれら 4 つの json が必要です。他のフォルダーを作成するには、これらの json をコピーする必要があります。) ショートカットを作成し (右クリックして作成)、ワークスペースのパスをパラメータとして渡すことができます。VSC メイン プログラム必ず二重引用符を付けてください。アイコンを追加することもできます。 1.18 には実際の仮想ワークスペースがあり、1 つのウィンドウに複数のフォルダーをまとめて含めることができます。「ファイル」メニューに「ワークスペースを保存」機能もありますが、試したことがないので保証できません大丈夫だろう。 この構成によれば、間違いなくコードを長時間コンパイルすると大きな問題になります。exe の山が別のフォルダーに分散している場合もあります。 可以考虑修改一下json文件,把生成文件的目录指定到一个专门放exe的文件夹里;如果不会,百度gcc使用教程以及看我的json里的注释。或者资源管理器右上角搜索*.exe然后手动删除。 也可也写个bat,放到工作区里,要用的时候右键Run Code: 其中 Windows 10,默认输入法只有一个微软拼音,按一次shift就能进行中英转换;为了保持兼容,按ctrl加空格也能进行中英转换,但这个快捷键正是强制触发Intellisense的快捷键。 所以,我强烈建议手动添加“英语”语言输入法,正常代码时切换到纯英文输入法(win+空格),在需要频繁中文注释或者在字符串里写中文时才用中文输入法的英文模式。 这样也可以解决某些游戏需要用到shift键但同样快捷键冲突的问题。具体操作可以自己百度,也可以看我写的这篇有点复杂的文章:Windows 切换显示语言与添加纯英文输入法。 为了阅读的连贯性,这一部分移到了“A. 一些其它可能出现的错误”。遇到问题优先查看那里是否已经提了。 我的一些其他的设置,用在全局settings.json里,根据自己的情况调整,不需要全部照着我的写。写完一个以后要打逗号;最外面的那个大括号我没加,就别弄丢了。 现在的VSC用的是可视化的设置界面,其实原本是手动编辑且出现两列设置的。点击右上角那个花括号就能手动编辑。3. コードの作成、コンパイル、デバッグ
#pragma GCC Diagnostics を使用するか、さまざまなフラグにパラメータを追加できます。とにかく、自分で調べてください。ただし、cpptools の Lint はフラグの設定をサポートしていないため、少し混乱します。フォロー:
Error and Warning Flags? · Issue #2814 ·microsoft/vscode-cpptoolsint arr[10]
は、渡された後は int* arr
になります。ウォッチで関数に *(int(*)[10])arr
を追加すると、完全な配列が表示されます。ただし、長さは指定する必要があるので、線を越える場合は注意してください。または、単純なプログラムでは、グローバル変数配列を使用していつでもそれを確認できます。 gdb にのみ有効で void* ではない別の書き方: *arr@10
。 コード ランナー
複数ファイルのコンパイル
gcc ソース ファイル 1.c ソース ファイル 2.c ヘッダー ファイル1.h
これは良いことです。C は g を使用します。デフォルトでA.exeが生成されるので、-oを追加して出力ファイル名を指定し、残りのオプションは Baidu gcc の使い方チュートリアルです。複数回コンパイルする必要がある場合は、バッチ プロセスを作成できます。 -I
、-l
(小文字の L)、- を指定する必要がある場合があります。コマンド L
内。特定のパラメータについては、そのライブラリのドキュメントを参照してください。 Intellisense を構成するには、c_cpp_properties.json へのパスを追加する必要がある場合もあります。 フォルダーを保存します
一時ファイルのクリーンアップ
del %~dp0*.exe /q /s
del %~dp0tempCodeRunnerFile.c /q /s
del %~dp0a.out /q /s
del %~dp0*.o /q /s
%~dp0
会被替换成该批处理所在目录,这是为了防止有同学选错工作目录,误删根目录下的文件;code runner的设置我也调整成了先切换到文件目录,双保险。添加纯英文输入法
某些可能出现的错误
4. 其他设置
作者:谭九鼎
链接:https://www.zhihu.com/question/30315894/answer/154979413
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
"editor.fontFamily": "等距更纱黑体 SC", // 控制编辑器字体
"editor.fontSize": 16, // 同上
"editor.fontLigatures": true, // 连体字,效果不太好形容,见 https://typeof.net/Iosevka 最后一部分
"editor.minimap.enabled": false, // 我个人不用minimap,就是右边那个东西
"editor.dragAndDrop": false, // 选中文字后,可以拖动它们调整位置。我是不需要
"editor.cursorSmoothCaretAnimation": true, // 移动光标时变得平滑
"editor.smoothScrolling": true, // 滚动平滑,不过效果很微弱
"files.trimTrailingWhitespace": true, // 保存时,删除每一行末尾的空格
"files.insertFinalNewline": true, // 保存后文件最末尾加一整行空行,Linux下的习惯
"files.autoGuessEncoding": false, // 启用后,会在打开文件时尝试猜测字符集编码。我关闭的理由见6,默认也是禁用的
"workbench.colorTheme": "One Dark Pro", // 主题
"workbench.colorCustomizations": {
"activityBar.foreground": "#39C5BB" // 自定义颜色;想定义其它位置参见官方文档
},
"workbench.settings.useSplitJSON": true, // 恢复手动编辑时的两列设置
"window.zoomLevel": 0.2, // 整体放大
"git.enabled": false, // 如果你不用git,可以考虑关闭它
"git.ignoreMissingGitWarning": true, // 同上
"[c]": {
// "files.encoding": "gbk" // 这样的格式可以对指定后缀的文件应用设置,如果你实在想用gbk,就这样设置吧。cpp同理。
},
更纱黑体是楼下B神做的字体,特点是标点好看(误):be5invis/Sarasa-Gothic
Consolas虽然是Windows自带字体中还算行的,但它只有英文字体;微软雅黑虽然是非衬线字体,但它不是等距的,这一点非常不适合编程,等线也不等距;中易宋体……告辞。不下新的字体,其他两大系统我不清楚,Windows下简直没有编程可用的字体。Consolas加雅黑嘛,也还行吧,不过能用更好的干嘛不用呢。
VS Code输出中文会出现乱码,很多人都遇到过。这是因为源代码默认是UTF-8编码,cmd/PowerShell是GBK编码。直接编译,会把“你好”输出成“浣犲ソ”。Linux就没有这个问题。
一种解决方法是用gcc,编译时用-fexec-charset=GBK这个参数(目前的配置是有的),生成的程序就是GBK编码的,源文件仍是UTF8。而clang的execution-charset supports only UTF-8,所以用clang就无解。
另一种方法是用宽字符输出,有点复杂,见:C语言与中文的一些测试 (Win, UTF8源码) 。此文也提到了chcp 65001的事。
直接修改非Unicode程序的语言为UTF8(beta)会导致所有用GBK的程序乱码,这是不可接受的。
当然,如果你不打算坚持用UTF8作为源代码的编码,那直接用GBK编码也行。
如果是打开已有的以GBK编码的文件,VS Code默认会以UTF-8编码打开(除非你设置了猜测编码),这样编辑器内的中文就会乱码,此时要点右下角的GBK,选“通过编码重新打开”,选UTF-8即可。那为什么不打开自动猜测编码呢?可以参见我的这个回答:VS Code 中文注释显示乱码怎么办?。如果你不担心,那就开吧。
如果把代码文件发给其他用Windows的人,最好转成GBK,否则别人用记事本打开有可能会乱码(1803后的记事本改善了一些,联通已经不会乱码了)。
对于调试,无论怎么做,gdb都无法调试路径中存在中文的程序。这个貌似是gdb的bug,但是优先级极低:[gdb] cannot not open source file with Chinese/Unicode characters in path when debugging · Issue #602 · microsoft/vscode-cpptools
总之,对于Windows,这些问题没什么好办法,因为本文用的这一套就是从Linux搬过来的。用Linux应该就没有这些问题了。
ヘッダー ファイルが見つからないという別のエラー:
--target=x86_64-w64-mingw パラメータを追加する必要があります。 このデフォルトのターゲットはソース コードにハードコーディングされています。調べてみましたが、これを変更する通常の方法が見つかりませんでした。 Clang のソースコードをダウンロードして自分で変更し、Clang 自体をコンパイルすれば解決できるかもしれません。または、mingw を使用する代わりに Windows SDK をインストールします。これにより、デフォルトのターゲットに準拠します。
もちろん、現時点で最も簡単な方法は、gcc を使用してコンパイルすることです。
12. Win での Clang の使用
コンパイル コマンドに
C_Cpp.autocomplete
、C_Cpp。 assignSnippets
は見つかりません。オフにすると、clangd
compile_flags.txt によって報告されるように繰り返されます。 ##実際には、これらのコンパイル オプションを設定するためのもので、基本的には -Wall と --target=x86_64-w64-mingw を使用するだけです。 Clangd は、評価対象のファイルに最も近いcompile_flags.txtのみを使用します。 --target が存在することを確認する必要があるため、フォールバック用にワークスペース ディスク上にルート ディレクトリを作成することをお勧めします。
しかし、さらに混乱するのは、C と C の両方がヘッダー ファイルとして .h を使用することです。std を追加しない場合、.c と .cpp は正しく lint できますが、.h は C モードを使用します。フォールバックに対する適切な解決策はないようです。繰り返しますが、Windows SDK をインストールするだけです。
サイズの点では、オントロジー コンパイラ拡張機能は、C を書くためだけに使用する場合、ハードディスク占有量は最大 1G まで小さくありません。メモリ使用量はまだ比較的少ない (約 0.5g); メモリを大量に使用するバグがありましたが、もちろんずっと前に修正されています。
VSC の最初の利点は、見た目が良いことではないでしょうか? C/C 用に特別に設計されたものではありませんが、現時点では最も最新のプレーン テキスト エディターとなるはずです。また、dev c 自体の Debug 関数にはバグがあることは言うまでもなく、Lint だけでも wintc、cfree、dev c よりもはるかに優れています。
他の IDE である CodeBlocks はまだ生きていますが、歴史的な重荷は非常に明らかです。 Clion は美しいインターフェイスと強力な機能を備えていますが、英語のみなので少しとっつきにくいかもしれません。学生は無料でキーを申請できますが、それ以外の場合は有料です。 Windows SDKを使いたい場合は、次にVisual Studio(インストーラー)、Cデスクトップ開発用のコミュニティ版にチェックを入れると、ClangのデフォルトのTargetに準拠しますが、VSを直接使った方が良いと思います。一部の C IDE に対する他の回答者の評価については、この回答を読むことができます: 私は C 言語を学習しようとしているプログラミングの基礎のない初心者です。VC6 または VS2015 を使用する必要がありますか? 。
私も学生の皆さんに言いたいのですが、Baidu でこの記事を読み、それを理解して自分で設定できるのであれば、あなたはすでに Tieba に連絡して待っている無数の人々よりも優れています。教師が QQ グループに IDE を配布するのは非常に強力です。能力がある場合は、VSC ドキュメントを読むことをお勧めします: Documentation for Visual Studio Code. それは複雑ではありません. 英語の実践的な応用を経験することも良いことです.
getchar();
を追加します。なぜ 2 つ使用される場合があるのかわかりません。 C 言語の先生に問い合わせるか、system("pause")
を使用するか、ブレークポイントを追加するか、launch.json の組み込みターミナル (externalConsole false) を使用してください。外部端末を使用することに固執して何もせず、実行後に一時停止したい場合は、少なくとも私の構成では VSC ではそれができません。私はそれを勉強したくありません。内蔵端子。 C:\mingw\bin\gcc にある場合は、
C:\mingw\bin と入力します。Win では大文字と小文字が区別されません。
setx /m path "%path%;C:\mingw\bin\" を実行します。このコマンドは管理者権限を必要とせず、端末が終了しても終了しません (上記と同じグラフィック効果があります)。
に注意し、誤って を削除しないようにしてください。
質問がある場合は、ディスカッション用にメッセージを残すことができますが、詳しく説明することが最善です。 もう一度言いますが、「preLaunchTask はコード 1 で終了しました」という文だけを教えてはいけません。この文は役に立たない。
プログラミング関連の知識について詳しくは、プログラミング入門をご覧ください。 !
以上がVSCode を使用して C および C++ プログラムを作成して実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。