チャチャチャおもちゃの抹茶っちゃ

ゲームのこととかプログラミングのこととか。気が向いたら書く。ブログタイトルは友人が考えました。

【VSCode】VSCodeでC/C++ソースコードを書く

目次

VSCodeC言語開発をする

軽量で高機能なMicrosoft製のテキストエディタVSCodeを使ってC言語ソースコードを記述していくための設定とかを紹介。

環境

  1. Windows10 Home 64bit
  2. Visual Studio Code 1.25.1
  3. gcc(MinGW 6.3.0)

Visual Studio Code のインストール

mattyan1053.hatenablog.com

日本語化まで上記にまとめたので参考にしてほしい。

拡張機能のインストール

今回はC言語を扱うのでC/C++拡張機能をインストールする。
C/C++で検索すれば一番上に出てくる「C/C++」をインストールでOK。これでコード補完やナビゲーションを行ってくれるようになった。

ヘッダーの設定

標準ライブラリ以外からインクルードすると、コード補完などが仕事をしなくなってしまう。そこで、ライブラリの場所を別途記述しておく必要がある。
[Ctrl]+[Shift]+[P]でコマンドを開き、「C/C++: Edit Configurations」をクリックすると、作業しているディレクトリに「.vscode」フォルダが作成され、その中に「c_cpp_properties.json」が作成される。このファイルを編集する。インクルードするものを増やしたい場合は"includePath"の項目を編集して、

"includePath" : [
    "${workspaceFolder}/**,
    "追加のインクルードライブラリの場所"
]

という記述を追加してあげると良い。

コンパイル

練習用に新しくディレクトリを作り、次のファイルを作成した。

#include <stdio.h>
int main(){
    int a;
    printf("Hello World!\n");
    scanf("%d", a);
    return 0;
}

ファイル名を「test.c」として保存した。

手動でコンパイル

VSCodeではターミナルを起動することができ、そこでコンパイルすることができる。
[Ctrl]+[@]を押すとターミナルが起動する。そこでいつもどおり

> gcc -o test test.c

などとやればコンパイルしてあげることができる。そのまま

> test

とやれば実行することも可能だ。

タスクに登録してコンパイル

[Ctrl] + [Shift] + [B]を押すとタスクが起動できる。
まだタスクを作っていないので、「実行するビルドタスクがありません。 ビルドタスクを構成する...」と表示されるはずだ。
これをクリックすると「テンプレートからtasks.jsonを生成」と言われるのでクリック。タスクテンプレートが表示されるので、今回はMinGWgccを利用するため「Others」を選択する。すると「.vscode」フォルダ内に「tasks.json」が生成される。できたら、"tasks":[]の中身を書き換えていこう。次のように書き換える。

"tasks": [
    {
        "label": "gcc",
        "command": "gcc",
        "args": [
            "${fileBasename}",
            "-o",
            "${fileBasenameNoExtension}"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        }
    }
]

"label"はタスクの名前なので実はお好みで良かったりする。それ以下で使用するコマンドとオプションを設定している。もしコンパイルするときに追加でライブラリを設定したりしたい場合は"args":[]の中に更に引数を追加して-"-I<../includePath>"などをつけておくと良いだろう。
これでタスクの設定が完了したので以後タスクを起動して「gcc」タスクを選択するだけでコンパイルを自動でやってくれるようになった。

mingw32-makeを使ってコンパイル

Linuxなどでよく使われている「make」コマンドだが、MinGWをインストールすると同じ機能のアプリケーションで「mingw32-make」というものを使うことができる。ここで「Makefile」を作成し、

test: test.o
    gcc -Wall -o test test.o

test.o: test.c
    gcc -c test.c

保存する。次にタスクからmingw32-makeを起動できるように

"command": "mingw32-make",
"args": [],

としてタスクを実行するとmakeコマンドでコンパイルすることができる。これで複数ファイルを扱いだしても問題なくコンパイルすることができそうだ。

まとめ

これでVSCodeを使ってC言語コンパイルができるようになった。大きな開発ならIDEとか使ったほうがいろいろ便利だけどちょっとしたコードを走らせたいときは結構便利かもしれない。

【VSCode】VSCodeの日本語化

目次

VSCodeとは?

軽量で高機能なMicrosoft製のテキストエディタ。最初インストールしたときは英語なので日本語化の方法についてメモ。

環境

  1. Windows10 Home 64bit
  2. Visual Studio Code 1.25.1

Visual Studio Code のインストール

次のリンクからVisual Studio Codeを自分のOSに合わせてインストール。コンパイラのインストールとかに比べて特に難しいことはないので問題なくできると思う。PATHは設定しておいても良いと思う(インストールのオプションにあったかも)。

code.visualstudio.com

PATH設定した場合はcodeで起動できる。

日本語拡張機能のインストール

Visual Studio Code(以下VSCode)のインストールが終わったら起動してみよう。次のような画面になるはずだ(既に日本語なのは許してほしい)。
f:id:mattyan1053:20180801220927p:plain
日本語拡張機能をインストールするので、左端の四角いマーク(Extension)をクリックする。そのあと、検索欄のところで「japanese」と検索しよう。一番上に出てくる「Japanese Language Pack for Visual Studio Code」をクリックしてインストールする。
f:id:mattyan1053:20180801221400p:plain

VSCode内での設定

日本語拡張プラグインがインストールできたら、最後はVSCode本体の設定を行う。
[Ctrl]+[Shift]+[P]を押した後、出てきたところにlanguageと入力してほしい。すると下に、「Configure Display Language」と出てくると思うのでそれをクリッククリック。
f:id:mattyan1053:20180801221709p:plain
最後に、"locale"の後ろの"en""ja"に書き換えれて上書き保存すればOK。

"locale": "ja"

あとはVSCode自体を一旦閉じて起動しなおそう。

これでVSCodeの日本語化が完了した。

これで「setting.json」の説明も日本語になっていると思うので思う存分カスタマイズしてほしい。

【C言語】WindowsでC言語開発環境を構築する

目次

WindowsC言語開発環境を構築

最近ではプログラミング教育を情報や機械、電気電子系以外の学科でも取り入れることが増えているらしい。
学校でC言語を扱うときは、多くの人が親しみがあるであろう「Windows」系のOSではなく、「Linux」とかのUNIX系OSを使うことが多いのではないだろうか。
しかし、多くの人はLinuxをいれたパソコンなんてもっていない。ここでは、「学校のC言語の課題を家でやりたい!」という人が自宅のパソコンでWindows10を使っている人が、C言語開発環境を構築する方法を説明する。

環境構築までの流れ

  1. コンパイラをインストール
  2. PATHを設定
  3. 使用するテキストエディタ周りの話

なぜIDE統合開発環境)を使わないのか
C言語で開発をしている人の中には、EclipseVisual StudioなどIDEと呼ばれているものを使っている人も多いだろう。しかし、こういったものはエディタとしての機能のみでなくコンパイルなどもほぼ自動で行ってくれたり、便利な機能が多くついているがゆえに、本来知っておきたい知識を得ないままになってしまうことがある。実際、学校の課題などでは「端末」などのコンソールでコンパイル、実行をするように教わるのではないだろうか。ここではあくまで「コードを書く」→「コンパイルする」→「実行する」の流れを自分で行うことができるような環境構築を目指す。

コンパイラをインストールする

コンパイラとは

C言語とは、人間が読んで理解することのできる、いわゆる「高級言語」と言われるものである。ある定められた文法に従って英単語などをつなげることで命令を記述することが可能だ。しかし、これらの言語はそのままではコンピュータは理解することができない。そこで、「高級言語」から、機械の理解できる「機械語」へ翻訳するのがコンパイラだ。C言語コンパイラWindowsでは最初入っていないので、翻訳することができない。したがって、自分でインストールしてあげる必要がある。

リンカーやアセンブラの話
コンパイラについてざっくり説明したが、これではコンパイラを正しく説明したというには全く足りていない。とはいえ、ここではコンパイラの必要性がわかれば十分なので、この程度の説明にとどめておく。

コンパイラのダウンロード

コンパイラは一種類ではない。いくつか種類が存在するが、ここではメジャーでフリーなコンパイラである「MinGW」のインストールについて説明する。
まずはMinGWの公式サイトからインストーラーをダウンロードしてくる。
f:id:mattyan1053:20180731231504p:plain
すると、しばらくしてSourceForgeとかいうサイトに飛ばされて更に少し待つと自動的にダウンロードが始まるだろう。完了するのを待つ。

コンパイラのインストール

通常、Windowsでは新しくファイルをダウンロードすると「ダウンロード」フォルダに保存される。頑張って見つけ出そう。
mingw-get-setup.exe」を見つけたらダブルクリックして実行。すると次のような画面が出てくる。英語だが仕方ないのでこのまま進めていく。
f:id:mattyan1053:20180731232019p:plain
おとなしく右下の「Install」をクリックする。すると画面が移行するので、
f:id:mattyan1053:20180731232205p:plain
いくつかあるチェックボックスは自分に合うものを選ぼう。「Installation Directory」は変更しなくて良いとおもう。どうしても他の場所にインストールしたい人は変更しよう。「...also install ...」はGUIをインストールするかどうか。わからなければそのままでも良い。
次の丸いボタンはインストールするアカウントを聞かれている。とりあえずそのままで問題ないだろう。複数のユーザーがいてすべてのアカウントにインストールしたいときは右を選択する。
その下は「スタートメニュー」または「デスクトップ」にショートカットを使えるようにするか。これもお好みで。追加されるのはInstall Managerなのでチェックを外しても良いと思う。全部確認したら「Continue」をクリック。するとインストーラーのインストールが開始する。しばらく待とう。
f:id:mattyan1053:20180731232735p:plain
おわったようだったら「Continue」。すると「MinGW Installation Manager」が起動する。起動しなかったらスタートメニューやデスクトップアイコンから起動しよう。起動したら今回は「mingw32-base」と「mingw32-gcc-g++」にチェックを入れる。インストールするコンパイラの種類を選択していて、今回はベーシックインストールとC++コンパイラのインストールをしておく。
f:id:mattyan1053:20180731233336p:plain
選択したら左上のメニューバーの「Installation」→「Apply Changes」を選択。
f:id:mattyan1053:20180731233725p:plain
続けてこんな画面が出るので「Apply」を選択。
f:id:mattyan1053:20180731233747p:plain
するとコンパイラのインストールが始まる。しばらくじっと待とう。すべて完了したら「Close」をクリック。
f:id:mattyan1053:20180731234024p:plain
これでコンパイラのインストールが完了した。実際にCドライブ直下のフォルダを見てみると「MinGW」が追加されており、中に「bin」フォルダ、更にその中に「gcc.exe」などが入っていることが確認できる。
f:id:mattyan1053:20180731234409p:plain

PATHを設定する

これでコンパイラgcc」のインストールができた。これで学校の端末や参考書と同じように使えればよいのだが、まだ設定が完了していないので使えない。ためしに使おうとしてみる。

コマンドプロンプトを起動する

Linuxの「端末」だとかターミナルだとかいうののWindowsバージョンは、「コマンドプロンプト」というものがある。開き方は、「スタートメニュー」→「Windows システムツール」→「コマンドプロンプト」で開いてもいいし、そのまま検索して開いても良い。おすすめは「Windowsキー」+「R」で「ファイル名を指定して実行」を開き、cmdと入力すると一発で起動できる。
f:id:mattyan1053:20180731234900p:plain
次のような画面が出ればOK。
f:id:mattyan1053:20180731235145p:plain

gccを使ってみる

コマンドプロンプトが起動したら、gcc --versionと入力してみよう。次のようになるはずだ。

> gcc --version
’gcc’は内部コマンド、または外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

つまり、まだ「gccコンパイラは使えないということだ。何故かと言うと、コマンドプロンプトは現在いるフォルダーの中にあるプログラムか、予め登録されたプログラムしかいきなりは起動できない。登録されていないプログラムは、丁寧に場所を次のように記述してあげる必要がある。

> C:\MinGW\bin\gcc.exe --version
gcc.exe (MinGW.org GCC-6.3.0-1) 6.3.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

このように、「gcc.exe」の場所を丁寧に書いてあげれば起動することができる。

PATHを設定する

これで無事「gcc」を起動することができた。しかし、いちいちコンパイルするたびにフォルダーの階層をたどって「gcc」を見つけるのは面倒である。そこで先ほど言った「コマンドに登録」をする。
まずはコントロールパネルを開く。「スタートメニュー」から「コントロールパネル」と検索すれば起動することができるだろう。次のような画面がでる。まずは右上の「カテゴリ」のところをクリックして「小さいアイコン」か「大きいアイコン」に設定しよう。
f:id:mattyan1053:20180731235945p:plain
「システム」→「システムの詳細設定」をクリック。
f:id:mattyan1053:20180801000200p:plainf:id:mattyan1053:20180801000211p:plain
環境変数」をクリック。
f:id:mattyan1053:20180801000800p:plain
上の方で「Path」を選択し、下のほうでも「Path」を選択したあと「編集」をクリック。
f:id:mattyan1053:20180801000833p:plain
「新規」をクリックしたあと「gcc.exe」の場所を入力する。デフォルトの場所から変えていなければ、C:\MinGW\binにあるはず。
f:id:mattyan1053:20180801000934p:plain
あとは「OK」を連打していけば良い。
これで無事登録できたので、コマンドプロンプトで「gcc」を使うことができるようになった。

実際に試してみる

先ほどと同様にコマンドプロンプトを起動する(さっき起動したのがそのままだった場合は一旦閉じて起動しなおそう)。次にgcc --versionと入力してみる。

> gcc --version
gcc (MinGW.org GCC-6.3.0-1) 6.3.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

と表示されればOK。表示されなければどこかしら間違っていたということなので、設定をもう一度見直してみよう。
さて、今度は実際にコンパイルしてみる。次のようなコードを用意した。

#include <stdio.h>

int main(){
    printf("Hello World!\n");
    return 0;
}

おなじみのHello Worldプログラムである。これをメモ帳で作り「test.c」として好きなところに保存しよう。今回はDesktopに保存した。 次にコマンドプロンプトでデスクトップにアクセスする。Linuxと同様、ディレクトリ(フォルダー)の移動はcdを使うことで可能だ。Windowsではlsが使えないので代わりにdirを使う。

> cd C:\Users\<username>\Desktop\
> dir
(略)
2018/xx/xx xx:xx         81 test.c
(略)

このような感じだ。「test.c」と同じ階層にたどり着いたら、実際に「gcc」を使ってみよう。

> gcc -Wall -o test test.c
> test
Hello World!

というように、無事コンパイルできて実行もできたはずだ。これで実際の学校の機械と同じように作業することができる。

文字コードと改行コード

これで一見すべての環境づくりは終わったように見えるのだが、まだいくつか問題点がある。文字コードと改行コードの問題だ。

文字コード

「文字化け」を知っているだろうか。「譁 ュ怜喧縺」とか表示されてしまうあれだ。実はWindowsUNIX系OSでは主に使っている文字コードが異なるので、家で書いたコードを学校で開くと表示がおかしくなってしまうことがある(特に日本語)。少し詳しく言うと、Windowsで主に使っている文字コードは「Shift-JIS」というものだが、多くのUNIX系OSでは「UTF-8」というのが主流なようである(俗に言うUnicode)。基本的には「UTF-8」を使っておくのが望ましいだろう(実はこのWebページもUTF-8)。

改行コード

こちらもWindowsUNIX系OSでは異なるものを使っている。Windowsでは「CRLF」という二文字を改行として扱っているのに対し、UNIX系OSでは「LF」の一文字を改行として扱っている。したがって、Windowsで改行したものをUNIX系OSで読み取ると余計な文字が一つ多いように見えるし、UNIX系OSで書いたものをWindowsで読み込むと正しく改行されないという問題が発生する。

メモ帳の問題点

メモ帳は保存するときに文字コードを指定することができる。しかし、デフォルトの文字コードはShift-JISである上、保存画面の右下という少しわかりにくいところにあるようだ。また、改行コードを変更することができなかった(最近変更できるようになったらしい?)。また、メモ帳は「int」などC言語でよく使う文字列を色付けしてくれないので、ソースコードが見づらいという問題点もある。

別のテキストエディタを利用する

メモ帳はC言語のコーディングには使いづらいことを説明した。ではどのようなものを使うのが良いのだろうか。
学校などでは「emacs」や「Vim」を使わせることが多いのかなと思う。これらにはWindows版も存在し、当然文字コードや改行コードを設定することが可能だ。ここではこの2つのエディタについてコードの変更方法を掲載しておく。

emacs

C:\Users\<username>\.emacsの中身に

;; デフォルトの文字コードと改行コード
(set-default-coding-systems 'utf-8-unix)

を追加しておくことでデフォルトの文字コードと改行コードを指定できるようだ(emacs使いではないので詳しくはない)。

Vim

C:\Users\<username>\.vimrcの中身に

set encoding=utf-8
set fileencoding=utf-8
set fileformat=unix

を追加しておく。デフォルト設定がここなのでいろいろいじると便利になったりする。「ESC」キーが遠いのでimap <C-j> <esc>とかおすすめ。

他のテキストエディタ

もちろん、上記のテキストエディタを使わなければいけないという理由はない。他にも有名なものとしてAtomなどがあり、当然文字コード及び改行コードが変更可能だ。個人的にはWindowsと同じMicrosoftの「Visual Studio Code」がWindowsによくあっていて気に入っているのでこれを使っている。多くのテキストエディタは上記2つ同様設定ファイルを書き換えることで扱う文字コードを変更できるようだ。
参考 - 【VSCode】VSCodeの文字コードと改行コードを変更する

まとめ

以上、Windows10でのgcc導入について説明した。PATH指定はgccに限らずコマンドから使いたいアプリケーションを登録するのに便利なので覚えても良いと思う。というか結構これしないと使わせてくれないやつとかあったように思う。
インストールしたらすぐ使えるわけではないというのが少しやりにくいかもしれないが、落ち着いて対処してほしい。