Python全盛の今ですが、C言語を学び始める方も多いのではないかという管理人の勝手な憶測のもと、WindowsのVisual Studio CodeでC言語プログラミングを始めるベストな方法をご紹介します。端的に言うと再生ボタンを押してgccコンパイル&実行の環境が欲しい方向けの記事です。
※初心者向けに手取り足取り説明しています。(たぶん)
この下にある目次を見ると非常に長くて「げげっ」っと思うかもしれませんが、初めての方でも迷わないように詳細に解説しましたので、ぜひ頑張ってみてください。
インストールが必要になるソフト
まずは何を自分のパソコンにインストールすべきか?という部分からお話しします。
1.C言語コンパイラ(gccコンパイラ)
2.エディタ(Visual Studio Code)
この2点です。
早速インストールしましょう。
WindowsパソコンならCコンパイラさえインストールすれば、あとはメモ帳でプログラムを書いてコマンドプロンプト上でコンパイル(プログラムを実行形式ファイルにすること)すれば作ったプログラムを実行することができます。しかし、メモ帳では行番号表示や入力支援機能がない、コマンドプロンプトでのコンパイルではメモ帳⇔コマンドプロンプト間の切り替えが何度も発生するので煩わしい、など慣れてくると面倒に感じます。
Visual Studio Codeを使えば1つの画面でプログラム作成+コンパイル+実行が可能です。
大規模な統合開発環境としてVisual Studioというものもあるのですが、ソフトの起動も重いし、ちょっと気軽にプログラミングといった感じではなくなるので、Visual Studio Codeがおすすめです。Visual Studio Codeを使えば雑用が減ってプログラミングそのものに集中できる、と言いかえることもできます。
C言語コンパイラをインストールする
実はC言語コンパイラにも色々な種類があります。ここは代表的なCコンパイラであり、フリーで一番導入が簡単なgccコンパイラを使います。
導入が簡単と言いましたが、初心者には語弊があるかもしれません。《他のコンパイラと比較して》gccコンパイラは導入が簡単という意味です。導入には面倒な作業があるかとは思いますが、以下の手順通りに済ませれば大丈夫です。頑張りましょう!
詳しい手順は以下のリンクから説明しています。リンク先で解説しているダウンロード、インストール、利用するための設定を済ませてください。
エディタ(Visual Studio Code)をインストールする
すでにお使いのパソコンにVisual Studio Codeがインストールされている方は本項目を飛ばしてください。
Pythonプログラミングを始めるために書いた記事へのリンクで恐縮なのですが、ほぼ途中まで同じ内容ですので、以下を参考にVisual Studio Codeをお使いのパソコンにインストールしてください。
ただし、以下記事を全て実践する必要はありません。記事内のJapanese Language Pack for Visual Studio Codeの追加の部分まで済んだらこの記事に戻ってきてください。(それ以降はPythonに関しての設定なので…)
※以降この記事でのVisual Studio Codeの呼称は、VsCodeと略します。
C言語プログラミングを楽にするための設定
C/C++機能拡張を導入する
まずは、VsCodeにC言語の予約語や関数名などの予測候補文字列を表示してプログラミングを楽にしてくれるC/C++という機能拡張を導入します。
VsCodeを起動します。
左側の機能拡張ボタンをクリックします。

検索ボックスに「c」と入力すると、C/C++という名前の機能拡張が表示されると思います。(似たような名称が出ますが、Microsoftと表示されていれば大丈夫です)
インストールボタンをクリックしてください。

ボタンがアンインストールの表示に切り替わり、「この機能拡張はグローバルに有効化されています」と表示されていれば機能拡張C/C++のインストールは完了しています。

VsCodeに機能拡張Code Runnerをインストールする
C言語プログラムはそのままでは実行できないので、コンパイルという作業が必要になります。
Windowsのコマンドプロンプト上でこれをしようとすると以下のような文字列を打ち込んでEnterキーを押す必要があります。
例)test.c というCプログラムをコンパイルする場合
gcc -o test test.c
結構これ面倒です。
再生ボタンを押せば、コンパイル&実行を一度にやってくれるVsCodeの機能拡張 Code Runner をVsCodeにインストールして楽をしましょう。
機能拡張ボタンをクリックして検索ボックスに「code runner」と入力して検索します。
表示されたらインストールをクリックします。

Code Runnerの設定を行う
この項目の設定はWindowsをお使いの場合の設定です。もしLinuxやMacOSをお使いであれば必要ありませんので、次の「Code Runnerのターミナル設定を変更する」に進んでください。
Code Runnerのインストールが完了するとインストールボタンが歯車に変わります。
歯車ボタンをクリックするとメニューが表示されるので、「機能拡張の設定」項目を選択します。

Code Runnerの設定が表示されます。
表示された中から「Executor Map」という項目を探し出し、settings.json で編集 の部分をクリックします。

VsCodeの設定ファイル(settings.json)が開きます。
表示されたファイルは、settings.jsonというVsCodeの設定ファイルです。万が一 settings.json の内容を間違って書き換えたりするとVsCode自体が不安定になるため注意して進めてください。
“code-runner.executorMap”: { と書かれた下の方にある次の項目を探してください。
"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
文字列「gcc」の後に「-fexec-charset=CP932」という文字列を追加してください。「-fexec-charset=CP932」の前後には、半角スペースを必ず入れてください。(重要)
追加後の状態
"c": "cd $dir && gcc -fexec-charset=CP932 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
settings.jsonファイルをCtrl+ S で上書き保存します。
保存をしたらsettings.jsonファイルは閉じてしまって構いません。
ちなみに上記設定はWindowsでC言語プログラム実行時に文字コードをShift JISで出力するための設定です。詳しく知りたい方は、こちらを参考にしてください。
Code Runnerのターミナル設定を変更する
先ほど表示した設定ウインドウが残っていると思います。設定ウインドウをクリックしてアクティブにします。(設定ウインドウを閉じてしまった場合は、Ctrl + ,(カンマ)で再表示できます)

設定ウインドウを下にスクロールして Run In Terminal という項目を探してください。
初期状態では Run In Terminal の項目にチェックが入っていません。クリックしてチェックを入れてください。

Code Runnerのデフォルトではプログラム実行時に読み取り専用エディターなるものが開いてしまいC言語で作ったキーボードから入力させるプログラムなどは実行できません。上記は、それを回避するための設定となります。(具体的に言うと、VsCodeでのC言語プログラムの実行をCode Runnerデフォルトの読み取り専用エディターからWindowsのコマンドプロンプトに変更する設定です)
Code Runnerの設定は以上です。
既定のシェルをcmd(コマンドプロンプト)に設定する【2021.02.16追記】
C言語をコンパイルしたり実行したりするには通常ターミナルを用います。
ターミナルはコマンドラインといって命令をキーボードなどから入力してEnterキーで実行するような環境のことです。Windowsでは、cmd(コマンドプロンプト)やPS(PowerShell)、LinuxやMacOSではTerminal(ターミナル)というアプリが一般的です。
WindowsのVsCodeの場合、このターミナル設定(既定のシェル)がデフォルトでPowerShellとなっています。gccでコンパイルする際、PowerShellだと色々と不具合があるため、これを従来からのcmd(コマンドプロンプト)に変更しておきます。
まずVsCodeで何もタブを開いていない状態にします。

キーボードから Ctrl + @ を押してターミナルを表示させます。

PowerShellの場合は、Windows PowerShell… などと表示されているはずです。
ターミナルウインドウの 1:powershell となっている部分をクリックして既定のシェルの選択を選びます。

画面上部に表示される選択肢の中から Command Prompt を選択します。

一旦削除ボタンをクリックしてターミナルを閉じます。

キーボードから Ctrl + @ を押して再度ターミナルを表示して確認します。

ターミナルに Microsoft Windows [Version 10.0.19042.804] …(バージョン番号は環境により異なります)などと表示されていれば既定のシェルがコマンドプロンプトに切り替わっています。
VsCode環境でのC言語プログラム作成から実行までの流れ
ようやくC言語プログラミングを利用できる環境が整いました。(ここからが開始です!)
早速、C言語プログラムを作って実行させてみましょう!…といっても少々準備が必要です。
C言語プログラムを格納するためのフォルダの準備と設定
まずはC言語プログラムを保存するためのフォルダを作ってください。
今回は例としてWindowsのドキュメントフォルダにgccという名前のフォルダを作りました。(お好きな場所に適当な名前のフォルダを作ってください)

フォルダを作らなくてもVsCodeでパソコンの色々な場所にあるC言語プログラムファイルを読み込んで実行することは可能です。しかし、C言語プログラムの保存場所がばらばらだと自身での管理が面倒になってきます。他のプログラミング言語にも言えますが、PythonならPythonプログラム保存用のフォルダ、C言語ならCプログラム保存用のフォルダなどとフォルダ分けして管理した方が、パソコンのファイルを整理整頓できますし、VsCode上でCプログラムをいちいち探す必要がなく楽です。
次に先ほどC言語プログラム用に作成したフォルダをVsCodeに登録します。
メニューから ファイル > フォルダーをワークスペースに追加… を選択してください。

VsCodeで管理したいC言語ソースコード格納用フォルダを選択して追加ボタンをクリックします。(下の画面では例としてドキュメントフォルダのgccフォルダを登録しています)

追加したフォルダは、VsCodeのウインドウ左側に表示されます。

フォルダの準備と設定は以上です。
C言語プログラムを作ってみる
動作確認の意味も込めて、VsCode上でC言語プログラムを作成してみます。
最初のCプログラムは画面に文字が表示されるプログラムです。
hello.c
/* 画面に何か表示するプログラム */
#include <stdio.h>
int main(void)
{
printf("C言語は習うより慣れよ\n");
return 0;
}
実行イメージ
C言語は習うより慣れよ
通常はこうした最初の動作確認プログラムに printf(“Hello, world!\n”); (5行目)のような半角英字を用いることが多いのですが、あえてマルチバイト文字の日本語を使って printf(“C言語は習うより慣れよ\n”); という文字列にしました。理由は、先ほどのVsCodeの設定がうまくいっているか確認するためです。もし実行結果で文字化けしているようであれば、C言語プログラミングを楽にするための設定の部分を見直してください。
先ほど追加したフォルダ上で 右クリック > 新しいファイル を選択します。

C言語のプログラムは拡張子が.cとなります。今回はファイル名を「hello.c」としました。

ファイルを作成すると右のエディターウインドウにカーソルが点滅し入力可能となります。
1と行番号が表示されています。先ほどのCプログラム hello.c を入力してみてください。

入力後のイメージ

プログラム入力の注意点
・「画面に何か表示するプログラム」と「C言語は習うより慣れよ」の部分は、全角文字です。それ以外は全て半角文字となります。プログラムは基本が半角文字であると考えてください。
・5行目と6行目の空欄部分はスペースを沢山入力せずに、TABキーを1回入力して空欄を入力しますこれを字下げと呼んでいます。
・5行目の「/n」という部分は、キーボードから半角文字で「¥n」と入力してください。
・3行目の intと mainの間、6行目の returnと 0の間にはそれぞれ半角スペースを入れてください。
プログラムを上書き保存する
VsCodeでは未保存の項目はファイル名の横に●がつきます。
また左側のファイルアイコンには、未保存のファイル数が表示されるようになっています。

次の手順に移る前にキーボードの Ctrl + S でプログラムファイルを上書き保存しておきます。
プログラムのコンパイルと実行
通常、作成したCプログラムは、
1.コンパイル
2.実行
といった手順で実行確認をします。プログラムをいきなり実行できるわけではなく、プログラムをコンパイルして実行形式のファイルを作ってから実行となるわけです。
VsCodeと機能拡張の Code Runner をインストールした環境であればこれを再生ボタン1つで済ませることができます。(今回の開発環境で一番楽ができる部分がまさにここです!)
VsCodeの右上にある再生ボタンをクリックします。

VsCode下にターミナルウインドウが表示され自動的にコンパイル+実行結果を出力してくれます。
hello.cのVsCodeでの実行イメージ

ターミナルにコンパイルエラーが表示された場合
先ほどの例はコンパイルが問題なく終了した例ですが、もしプログラムに入力ミスや間違いなどがあると以下のような形でターミナルウインドウにコンパイルエラーが出力されます。

エラーメッセージが出ると何か悪い事をしでかしてしまったような気になりますが、気にしないでください。エラーメッセージはプログラミングを上達させる手助けをしてくれます。
エラーメッセージ部分をよく見て下さい。
上記の例だと以下の部分が重要です。
hello.c:5:45: error: expected ‘;’ before ‘return’
hello.c はファイル名です。その後に続く 5:45 の数値は、「5行目の45文字目あたりが怪しいよ」といったエラーメッセージになります。もっともこのエラーメッセージの場合その後の error: に続く expected ‘;’ before ‘return’ の記述で ‘;’ が含まれているので、C言語特有の命令の最後に ; (セミコロン)を付け忘れているのかな、と予想がつきます。
ちなみにプログラムにエラーが見つかって修正する作業の事を デバッグ といいます。
【重要】コンパイルエラーに対する心構え
大事な点なので、もう少しデバッグ作業とコンパイルエラーについてお話しておきます。
初心者がプログラミングで一番時間を費やす部分がデバッグ作業だったりします。管理人は初心者ではないですが、いまだにデバッグに時間が掛かります。(じゃあ、初心者じゃん!などと言わないでください)
コンパイルエラーの英語のメッセージを読みたくないという人も多いと思います。
その場合は、コンパイルエラー時のファイル名に続く行番号部分に注目してください。先ほどの例で言えば、hello.c:5:45 のような部分。
エラーが起きている行数が分かれば、まずはその行にエラーがないかチェックします。その行になければ1つ上の行をチェックします。プログラムは上から下に流れるので、エラーが起きている行数かその行より上をチェックするようにします。大抵のエラーは、エラーが起きている行かその1つ上の行で問題があるからです。
そしてコンパイルエラーの多くは入力ミスです。自分では正しいと思って入力しているので、見逃しがちなのです。入力ミスは、エディターに指定したフォントが原因になる事もあります。例えば、大文字のアイと小文字のエルが同じく見えてしまうようなフォントを使っていると入力ミスに気が付きません。(ちなみにWindowsだとメイリオやMonacoあたりがおすすめです)
学生の作ったプログラムを見ていると全角文字をプログラム中に入力してしまいコンパイルエラーとなっていることも多いです。コメント文の中やprintf関数の “ の後に全角文字を入力後、そのまま全角で入力を続けてしまっている例がありました。
わたしはプログラミングで挫折する一番の原因はデバッグ作業でプログラミング嫌いになることだと思っています。
自分の入力ミスに自分で気づけるようになれば自然とプログラミングは上達していきます。
まとめておきます。
コンパイルエラーに対する心構え
1.エラーが出た行、またはその上方の行に間違いがある
2.エラーは自分の入力ミスがほとんど
3.アルファベットが区別しやすいフォント設定にしてあるか?
4.変な場所に全角文字がまぎれていないか?
以上、長々とおつきあい頂きありがとうございました。
WindowsのVisual Studio CodeでC言語プログラミングを始めるベストな方法を終わります。
プログラミングは、《 習うより 慣れよ 》です!
コメント
質問失礼します。visual-studio-codeでc言語プログラミングを始める(windows編)というページで、C言語プログラム実行時の文字化け対策を行った(文字列「gcc」の後に「-fexec-charset=CP932」という文字列を追加)のですが、再生ボタンを押した時に日本語が文字化けしてしまいます。この時どのような対策を講じればよいでしょうか?
a さん、こんばんは。管理人です。
文字化けの件で一度確認をお願いしたいのですが、次のようなプログラムを実行した場合は実行ができますでしょうか?
上記プログラムで「Hello!」と表示されたら、次のプログラムではどうでしょうか?
実行した際、「C言語は習うより慣れよ」と表示されずに「C����͏K����芵���」のような感じで文字化けしていたら、同記事の4.4の項目「Code Runnerのターミナル設定を変更する」の設定を見直してみてください。
この設定がされていないとコンパイル&実行はできますが、文字化けして表示されてしまいます。
管理人さん、返答ありがとうございます。記事の4.3と4.4の項目を見直してみたのですが改善しませんでした。「Hello!」と出力はできますが「C����͏K����芵���」と出力されます。
以下はターミナルの出力結果です。
owner@PC:~/suport/C$ cd “/home/owner/suport/C/” && gcc -fexec-charset=CP932 start.c -o start && “/home/owner/suport/C/”start
C����͏K����芵���
管理人さん、前にした質問ですが、setting.jsonの「“code-runner.executorMap”:」を削除すると文字化けが解消しました。回答していただきありがとうございました!
a さんこんにちは。
管理人です。うまく動作したようでまずは良かったです!
送って頂いたターミナルの出力結果から察するにお使いのOS環境はWindowsではなくLinux環境でしょうか?
LinuxやMacOSであれば、Code Runnerの設定で「-fexec-charset=CP932」を追加する必要はなくなります。
そもそも「-fexec-charset=CP932」はWindows環境でデフォルトの文字コードであるShift-JISで実行するためのコンパイルスイッチだったので、Windows以外の環境であれば大抵文字コードがUTF-8で処理されているので、「-fexec-charset=CP932」を追加する必要がなくなります。
ともあれ良かったですね。
エディタ類を使用するは初めてです。
例題を実行してみたのですがいくつか疑問が生じてしまいました。
質問させてください。
疑問(1)ターミナル欄が実行前は1:PowerShell、実行後は2:Codeに変化するがこれはなに?
疑問(2)printfの引数に\nを入れているのですが実行結果は改行されず(\入力したがリストは逆スラッシュになってしまう)
疑問(3)実行結果の前に出ているメッセージ中のif($?)はなに?
以下が実行結果の画面をコピペしたものです。
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6
PS C:\Users\****\Documents\gcc> cd “c:\Users\****\Documents\gcc\” ; if ($?) { gcc -fexec-charset=CP932 kanji.c -o kanji } ; if ($?) { .\kanji }
C言語は習うより慣れよ
PS C:\Users\****\Documents\gcc>
以上よろしくお願いいたします。
VS君さん(「君」に「さん」をつけるのも変か!)こんばんは。管理人です。
わたしはC言語環境を入れる前からVisual Studio Codeを使っていたので、すんなり出来ていましたが、もしかすると「既定のシェル」の設定を自分で変えていたのかもしれません。
どうやらVisual Studio Codeは既定のシェルがPS(Windows Power Shell)というものになっているらしく、
今回のC言語環境では既定のシェルをcmd(コマンドプロンプト)にしておく必要があるようです。
VS君さんからいただいた疑問(1)~(3)は全て既定のシェルをcmdに変更することで解決するはずです。
変更方法を動画でアップしましたので既定のシェルを変更してみてください。(動画ではあえてVS君さんと同じエラーメッセージを出した状態から変更しています)
動画URL(既定のシェルを変更する方法)
https://youtu.be/qKf_oqvX164
Visual Studio Codeは、最初に使うエディタとしては、手ごわいソフトです。
でも使いこなせるときっと大きな力になるはずです。
管理人様
ご丁寧に動画までアップしていただきありがとうございます。
早速その通りcmdにしたところ問題の現象が解消しました。
あっけない結果でしたが、奥が深そうで私には理解不能です。
とは言え、これでgccを使える環境が整いました。
>>Visual Studio Codeは、最初に使うエディタとしては、手ごわいソフトです。
もっと簡素で、ソースを実行できるエディタってないんですかね。
解消できて良かったです。
WindowsのPS(パワーシェル)は、cmd(コマンドプロンプト)の後継なのですが、使える命令が微妙に違うので、こういったことが起こりがちです。
Microsoftは、ユーザにPSの方を使わせたい感じですね。
>> もっと簡素で、ソースを実行できるエディタってないんですかね。
一番簡単なエディタはWindows標準に添付のNotepad(メモ帳)かも。
メモ帳でC言語のプログラムを保存して、コマンドプロンプト上でgccでコンパイルして実行、といった手順でも十分C言語プログラミングができます。
最近は、Visual Studio Codeをよく利用しますが、それまでは秀丸というシェアウエアのエディタを愛用していました。(というか今もしている)
サポートありがとうございました。
とても勉強になりました。
並行作業でTeraPadというエディタを触ってみました。
私にはこれくらいがいいです。
このTeraPadとコンパイラを連動させている例がネット上に二つありました。
一つは対象がVisual-C、もう一つはmingwでしたがこちらは実行ファイルを一般公開していません。
Cの学習だし、コマンドプロンプトで十分なんだけど、私はタイプミスが多くてイラつくんですよね。
TeraPadいいですね。シンプルですし。
わたしもエディタに関しては色々と使ってみてようやく落ち着いてきた感じです。
質問頂いたおかげでわたしも勉強になりました。ありがとうございました。
このサイトの手順通りにやってみたのですが実行結果が微妙に異なってしまいます。if ($?)というのは何かがうまくいっていないのでしょうか。下に実行結果を載せます。
PS C:\Users\81809\Documents\gcc> cd “c:\Users\81809\Documents\gcc\” ; if ($?) { gcc -fexec-charset=CP932 hello.c -o hello } ; if ($?) { .\hello }
C言語は習うより慣れよ
また、実行時にhello.exeというファイルが作成されるのですが、「このファイルはバイナリか、サポートされていないテキストエンコードを使用しているため、エディターに表示されません」と出て無理に開くと完全に文字化けしてしまっています。これはどうしてなのでしょうか。
初心者 さん、こんにちは。管理人です。
つい2日間にこの記事のコメント欄で同じ質問がありまして、どうやら既定のシェルがPS(Windows Power Shell)だとこのメッセージがでるようです。
既定のシェルをcmd(コマンドプロンプト)に設定しなおすとif($?)…という表示がきえ通常の実行になるはずです。
以下の動画で既定のシェルをコマンドプロンプトに変更していますので、設定しなおしてみてください。
動画では実行して同じエラーメッセージを出した状態から変更する操作をしています。
動画URL(既定のシェルを変更する方法)
https://youtu.be/qKf_oqvX164
> 実行時にhello.exeというファイルが作成されるのですが、「このファイルはバイナリか、サポートされていないテキストエンコードを使用しているため、エディターに表示されません」と出て無理に開くと完全に文字化けしてしまっています。これはどうしてなのでしょうか。
こちらの質問は状況がよくわからないのですが、hello.exeをダブルクリックして実行したら上記のエラーが表示されるという意味でしょうか?
管理人様 返信遅れてしまい申し訳ないです。
同じ質問というのは、たぶん自分のせいかと、、1回目に送ったときにコメント欄に表示されなかったので時間をおいて、もう一度送らせていただきましたw お騒がせしてしまい申し訳ありません。。
わざわざ動画にしていただき、本当にありがとうございます!!
PSについては解決しそうです!
> 実行時にhello.exeというファイルが作成されるのですが、「このファイルはバイナリか、サポートされていないテキストエンコードを使用しているため、エディターに表示されません」と出て無理に開くと完全に文字化けしてしまっています。これはどうしてなのでしょうか。
実行すると、hello.cの下にhello.txtというファイルが勝手に作られて、中にはこのコメントが書かれているという状態です。「このまま開きますか?」というところをダブルクリックすると完全に文字化けしてしまっているという状態です。
こんばんは。初心者さん。
> 実行時にhello.exeというファイルが作成されるのですが、「このファイルはバイナリか、サポートされていないテキストエンコードを使用しているため、エディターに表示されません」と出て無理に開くと完全に文字化けしてしまっています。これはどうしてなのでしょうか。
コンパイルを行うとhello.cであればhello.exeという実行ファイルが作成されます。
このhello.exeをターミナル上で実行までしてくれるのがCode Runnerの機能なので、VsCode上でhello.exeを選択して何かするということは必要ないです。(hello.exeのファイルが作成されていれば問題ないということです)
通常拡張子が~.exeのファイルは中身を見ようとすると文字化けして見ることができません。
これはバイナリファイルといってコンピュータしか理解できないファイルです。
だから初心者さんの言うように「文字化けして」当然です。
~.c → C言語プログラム(人間が理解できる)
~.exe → 実行ファイル(コンピュータが理解できる)
とでも憶えてください。
hello.txtが作成されたということですが、一度右クリックして削除して再度作成されないようであれば問題ないです。
質問失礼します。
文字化け対策の入力時(「gcc」の後「-fexec-charset=CP932」文字列を追加)した際に、以下のエラーが発生します。
発生場所 行:1 文字:36
+ cd “c:\Users\s134472\Desktop\gcc\” && gcc -fexec-charset=CP932 hello.c -o hello …
+ ~~
トークン ‘&&’ は、このバージョンでは有効なステートメント区切りではありません。
発生場所 行:1 文字:81
+ … llo.c -o hello && “c:\Users\s134472\Desktop\gcc\”hello
+ ~~
トークン ‘&&’ は、このバージョンでは有効なステートメント区切りではありません。
発生場所 行:1 文字:84
+ … .c -o hello && “c:\Users\s134472\Desktop\gcc\”hello
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
式は、パイプラインの最初の要素としてのみ許可されます。
発生場所 行:1 文字:115
+ … 2\Desktop\gcc\”hello
+ ~~~~~
式またはステートメントのトークン ‘hello’ を使用できません。
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : InvalidEndOfLine
別サイトで、「code-runner.executorMap」内の「setting.json」について「&&」の箇所(形23カ所)を「-and」に置換すると、次に以下のエラーメッセージが発生します。
(変更前)
“c”: “cd $dir && gcc -fexec-charset=CP932 $fileName -o $fileNameWithoutExt -and $dir$fileNameWithoutExt”,
(変更後)
“c”: “cd $dir -and gcc -fexec-charset=CP932 $fileName -o $fileNameWithoutExt -and $dir$fileNameWithoutExt”,
(参考サイト)
http://tooljp.com/language/powershell/html/Token-is-not-a-valid-statement-break-in-this-version.html
(エラーメッセージ)
Set-Location : パラメーター名 ‘o’ があいまいなため、パラメーターを処理できません。一致する名前の候補は次のとおりです: -OutVariable -OutBuffer。
発生場所 行:1 文字:74
+ cd “c:\Users\s134472\Desktop\gcc\” -and gcc -fexec-charset=CP932 hello.c -o hell …
+ ~~
+ CategoryInfo : InvalidArgument: (:) [Set-Location]、ParameterBindingException
+ FullyQualifiedErrorId : AmbiguousParameter,Microsoft.PowerShell.Commands.SetLocationCommand
別のパソコンでは、「&&」を「-and」に置換したあと、setting.jsonの「“code-runner.executorMap”:」を削除することで、問題を解決できています。ちなみに、現使用パソコン、および、別のパソコンはどちらもOSはWin8.1です。
よろしくお願いします。
k さん、こんにちは。管理人です。
WindowsでのVsCodeではターミナルの設定がデフォルトでPS(PowerShell)になっているようで、gccでコンパイルする際、色々と問題が発生します。(わたしも当初このことに気づいていませんでした)
まずはgccでコンパイルする際、cmd(コマンドプロンプト)を使うようにする必要があります。
本日記事を追記したので、まずは既定のシェルの設定をcmd(コマンドプロンプト)にしてみてください。
既定のシェルをcmd(コマンドプロンプト)に設定する【2021.02.16追記】
上記の設定は、前項目の「C言語プログラミングを楽にするための設定」が全て終了していることが前提となります。
お話から察するに、すでにkさんの方で変更した「&&」→「-and」を再度「-and」→「&&」に置換しなおす必要があると思います。
Run In Terminalという項目にチェックを入れるとユーザー設定に書き込めません。ユーザー設定を開いてファイル内のエラーを修正してからもう一度お試しくださいと出てきてしまいます。どうしたらいいでしょうか。また
クマさんお早うございます。管理人です。
おそらくRun In Terminalのチェックを入れる前に書き換えた設定の段階で必要な文字を消してしまっている可能性があります。
「ユーザ設定に書き込めません…」のエラーメッセージが表示された際、「設定を開く」というボタンが表示されるかと思います。このボタンをクリックして設定をひらき、間違っている箇所を修正する必要があります。
settings.jsonというファイルが開くことになりますが、このファイルはJSON形式といって例えば次のような形式です。
“doubutu”: {
“name1”: “キツネ”,
“name2”: “タヌキ”,
“name3”: “ネコ”,
},
:
よくあるのは「,」(半角カンマ)や「”」(ダブルクォーテーション)を付け忘れたり、消してしまったりする例です。
「:」(コロン)なんかも間違って「;」(セミコロン)で入力してしまったりとかもあります。
Code Runnerの設定のとき「-fexec-charset=CP932」などの文字列を追加したかと思いますが、その際必要な文字列を消してしまった可能性などがあります。
もう一度ユーザ設定ファイルを見直してみてください。
一応修正イメージを動画にしたので参考にしてください。(動画の例では「,」を付け忘れている例です)
https://youtu.be/8w5OGjsjba8
いらない文字を追加してしまっていました。この手順通りに進めて実行までできました。ありがとうございます!
良かったです。わたしもよくやります。
管理人 様
コメントありがとうございます。
「&&」→「-and」を再度「-and」→「&&」に置換しなおし、既定のシェル設定でPSを削除してcmdに設定しました。
次に、コンパイルを実行すると、
ターミナルの所が、『2:Code』となり、以下のエラーメッセージが表示されます。
C:\Users\s134472\Desktop\gcc>cd “c:\Users\s134472\Desktop\gcc\” && gcc -fexec-charset=CP932 tempCodeRunnerFile.c -o tempCodeRunnerFile && “c:\Users\s134472\Desktop\gcc\”tempCodeRunnerFile
‘gcc’ は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
また、「gcc」フォルダの所に「Hello.c」ファイルの次に「tempCodeRunnerFile.c」が追加され、そのファイル内には1行だけ
#include
が表示されています。
よろしくお願いします。
※すみません、下のコメントは余分のため、削除を希望します。
こんばんは kさん。管理人です。
> ‘gcc’ は、内部コマンドまたは外部コマンド、
> 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
このエラーメッセージはgcc.exeというコンパイラアプリへのWindowsのパス設定がされていない状態です。
一応お聞きしますが、gccコンパイラはインストールされていますか?
もしインストールがまだであれば、C言語のコンパイルや実行ができません。
以下を参考にgccコンパイラをインストールしてください。
WindowsにC言語開発環境(gccコンパイラ)を導入する
あるいはすでにgccコンパイラをインストール済みであれば、単にgcc.exeへのWindowsのパス設定がされていない状態ですので、上記リンク先内の「MinGWをコマンドラインから使うための設定」の項目にあるPath設定をしてみてください。
あと、tempCodeRunnerFile.cのファイルに関しては機能拡張のCodeRunnerが吐き出した不要なファイルなので削除してしまっても構いません。おそらくきちんとgccでコンパイルが出来ていないため残ってしまったファイルかと思われます。
頑張ってみてください。
管理人様
コメントありがとうございます。
現在、「MinGWのインストール」が完了しています。
次の「MinGWをコマンドラインから使うための設定」で、サイトの説明ではOSがWin10での設定?の様なのですが、OSがWin8.1と言う事もあり、環境変数の入力の画面が違うため、ここで設定が止まってしまっています。
ユーザーの環境変数の所に
変数”Path” 値”・・・(CドライブにもPath入っている様な表示)”はあります。
そこで、「新規」をクリックすると、新しいユーザー変数と表示され、
変数名(N):”入力画面”
変数値(V):”入力画面”
の事が聞かれます。
上記の、変数名および変数値には、何を入力すれば良いのでしょうか。
以前、Pathに
C:\MinGW\bin
に近い形を入力すると、Pathの所が全部消えた事があり、この入力で良いのか自信がありません。
ここが解決できると、
「ファイル名を指定して実行」→「cmd」の話に進められそうな感じです。
よろしくお願いします。
こんばんは k さん。
Windows8.1は環境変数の設定画面が違うのでしたね。失礼しました。
【Windows8.1の場合】
1.ユーザーの環境変数の所にすでに変数Pathが存在している場合は、「編集…」ボタンをクリックします。
2.変数名の項目が「Path」となっているかと思います。変数値の項目はおそらくテキストボックスに入りきらないくらい文字列が並んでいるので、そのテキストボックスの一番最後までカーソルを移動します。(要するに変数値に入力済みの内容は消さないようにします)
3.変数値の一番最後の文字が「;」であれば、その後に「C:\MinGW\bin;」を追加してOKボタンを押します。最後の文字が「;」出ない場合は「;」を最後に追加してから「C:\MinGW\bin;」を追加してOKボタンを押します。
ちなみに「;」は複数のパスをつなげる役割があるので「c:\Windows」と「C:\MinGW\bin」をつなげる場合、「c:\Windows;c:\MinGW\bin;」などとなります。
最後に「;」を入れておくと次回別のパスを追加する際、間違いがないです。
パス名や「;」の前後などにスペースは入れないでください。
あと一応CドライブのMinGWフォルダ内にあるbinフォルダの中にgcc.exe(gccコンパイラ本体)が存在しているかも確認しておいてください。
管理人様
ご連絡ありがとうございます。
昨日の助言の操作の通りに作業をしました所、コマンドプロンプトの実行で、設定通りにできました。
”入力画面”←テキストボックス
の所も説明があり、拙い表現での質問だったにも関わらずありがとうございました。
これで、一通りのプログラム作業ができるかと思います。
また不明な点がありましたら、よろしくお願いします。
それは良かったです。
出力結果に
‘gcc’ は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません
。
とあり結果が出力されませんでした。
gccコンパイラはインストール済みで、コマンドプロンプトでのgccコンパイラバージョン表示もなりました。
何をすればいいかわかりません!よろしくお願いします。
すみません先ほどコメントさせていただいたのですが再起動したらなりました!!
お恥ずかしい限りです…(笑)ほんとにごめんなさい。
とにかくC環境出来てよかったです!ありがとうございました。
管理人です。良かったですね。
パス設定などをする前からターミナルを開いていたりすると一旦ターミナルを終了してからでないとこういったメッセージがでることがあります。