環境構築編集

環境構築はプログラミング学習で最大の難関です。 環境構築がうまくいかず、プログラムを書き始める前に諦めてしまうことも少なくありません。

現在はオンライン実行環境 (Playground)が提供されており、環境構築をせずにC言語を試せるようになりました。 これらはインストールが必要なく、OSに関わらず利用できるため、PCはもちろんスマートフォンやタブレットでもC言語を学べます。 本格的なプログラムを書くには機能不足ですが、C言語の文法や意味を学ぶには十分でしょう。

この他、Windows限定ですが、C言語は有名なため、機能不足ですがアプリ形式でインストールせずにクリックするだけで起動できて使用できる簡易コンパイラもいくつか存在しています。ネットワーク環境に不安のある場合などは、こちらを入門に使うと良いでしょう。

この項目では、簡易的なオンライン実行環境や簡易コンパイラのほか、加えて本格的なコンパイラとビルドツールを使った開発手法や統合開発環境についても概説します。


オンライン実行環境編集

オンライン実行環境はWebブラウザで動作し、プログラムを実行したり、実行結果を確かめたりできます。
数多くのオンライン実行環境がありますが、ここではpaiza.IOとWandboxを紹介します。

ただし、機能制限があり、scanfなど入力に関する一部の機能がpaiza.IOとWandboxの両方とも使えません。

なお、これらのオンライン実行環境を使う際、境界検査インターフェースを使用したプログラムはコンパイル・リンクできないので、標準Cライブラリーの非境界検査インターフェース版の関数に置き換える必要があります[1]

境界検査インターフェースの関数をMicrosoft Visual C/C++ 特有の関数と理解している人がいますが、たとえば strcpy_s (長さ制限付きで文字列をコーピーする関数)はMSVC/C++特有の関数ではなく、C11で追加された境界検査インターフェース(オプショナル)です。2021年8月現在、glibc が実装していないので paiza.IO と Wandbox では未対応です。このため、標準C言語で同様の機能を持つ関数 strncpy に置き換える必要があります[2]

paiza.IO編集

paiza.IOはギノ株式会社が運営するオンライン実行環境で、GUIに日本語を選べるのが特徴です。

  1. 「コード作成を試してみる」をクリックすると編集画面に移動します。
  2. 左上のプルダウンメニューでプログラミング言語を選べます。ここでは C を選択します。
  3. テキストエリアにプログラムを入力します。
  4. 「実行」ボタンをクリック、もしくはCtrlキーとEnterキーを同時に押すとプログラムが実行されます。

Wandbox編集

Wandboxは日本人有志が運営しているオンライン実行環境で、様々なプログラミング言語と言語処理系を選べるのが特徴です。

  1. 左上のプルダウンメニューでプログラミング言語やコンパイラを選べます。ここでは C を選択します。
  2. テキストエリアにプログラムを入力します。
  3. 「Run」ボタンをクリック、もしくはCtrlキーとEnterキーを同時に押すとプログラムが実行されます。


開発手順編集

注意!
以下は昔ながらのエディタとコンパイラを使った開発手順を説明してあります。
今は統合開発環境を使って、これらの手順の大部分が自動で行われるため、
このような記述を必要ないと思う方もいるかもしれませんが、
エラー発生時の対処などに役立つかもしれないという考えのもと、
あえて説明してあります。

C言語プログラムの開発は、以下の手順で行われる。

  1. エディタを使ってソースファイルを作成します。
    Windows付属の「メモ帳[3]」などのテキストエディタを使って、C言語のプログラムを入力し、拡張子「.c」のファイルとして保存します。このファイルをソースファイルと呼ぶ。またソースファイルに書いたプログラムをソースコードと呼ぶ。
  2. コンパイラを使ってソースファイルをオブジェクトファイルへとコンパイルします。[4]
    ソースファイルはそのままではコンピュータでの実行に適さない。そこでよりコンピュータでの実行に適した形式に翻訳する必要があります。この翻訳を行うことをコンパイルと呼び、コンパイルを行うプログラムをコンパイラと呼ぶ。また、こうして作られる拡張子「.obj」のファイルをオブジェクトファイルと呼ぶ。
  3. リンカを使って複数のオブジェクトファイルやライブラリをリンクし、実行可能ファイルを作成します。
    1つのオブジェクトファイルでは実行することはできず、拡張子「.exe」の実行可能ファイルを作るためには、複数のオブジェクトファイルやライブラリを結合する必要があります。この結合を行うことをリンクと呼び、リンクを行うプログラムをリンカと呼ぶ。また、多くのコンパイラはコンパイル時にリンクも自動で一緒に行うことがあります。

なおC++の場合、ソースファイルの拡張子が「.cc」「 .cpp」「 .cxx」あるいは「 .C」となる。

開発環境を整える編集

上では昔ながらのエディタとコンパイラを使った開発手順について述べたが、 今はより便利な統合開発環境があり、あえてそれらを使う必要はないだろう。 統合開発環境とはエディタ、コンパイラ、リンカ、デバッガ(※プログラムの不具合いわゆるバグを取り除くためのプログラム)などの機能が、 使いやすく統合された開発環境のことです。 以下では代表的なエディタ、コンパイラ、統合開発環境などを紹介します。 使い方は各公式サイトまたはヘルプを熟読し、習得して欲しい。

なお、C言語の場合でも、C++の開発環境で構わない。

コンパイラ編集

GNU Compiler Collection編集

概要
C、C++、Objective-C、Fortran、Java、Ada、Goのコンパイラ。
ライセンス形態
(価格:フリーソフトウェア、 商用利用:?、コンパイラのソース公開:公開)
プラットフォーム
準拠規格
公式サイト
https://gcc.gnu.org/
概要説明
GNU Compiler Collection は、もし Linux で Ubuntu や Fedora などを使っている場合、たいていのバージョンでは標準で この GNU Compiler Collection コンパイラが入っているので、インストールの手間無く使える場合が多い。
なお、「GCC」(ジーシーシー)と略称される場合も多い。

LLVM/Clang編集

概要
llvm
任意のプログラミング言語に対応可能なコンパイラ基盤である。2.6 以降は clang を含め配布されている。
clang
C、C++、Objective C/C++、OpenCL、CUDA、RenderScript のコンパイラフロントエンド。
ライセンス形態
イリノイ大学/NCSAオープンソースライセンス[5]
LLVM例外付き Apache License 2.0(バージョン9.0.0以降[6])
プラットフォーム
クロスプラットフォーム
準拠規格
C11、C++17準拠。C++2aの一部を先行実装。
公式サイト
https://clang.llvm.org/
概要説明
LLVMプロジェクトは、モジュール化された再利用可能なコンパイラとツールチェーン技術の集合体です。LLVMはその名前に反して、従来の仮想マシンとはほとんど関係がありません。LLVM "という名前自体は頭文字ではなく、プロジェクトのフルネームです[7]
Clangプロジェクトは、LLVMプロジェクトにおいて、C言語ファミリーの言語(C、C++、Objective C/C++、OpenCL、CUDA、RenderScript)の言語フロントエンドとツール基盤を提供しています。GCC互換のコンパイラドライバ(clang)とMSVC互換のコンパイラドライバ(clang-cl.exe)の両方が提供されます。今日からソースを入手してビルドすることができます[8]
GCCは、最初はC言語で実装され途中からC++で実装するよう変更されましたが、LLVM 及び Clang は最初からC++で実装されています。
FreeBSD のシステムコンパイラとして gcc を置き換える形で採用されました。
Apple の提供する開発環境である Xcode は、バージョン4から llvm/clang を標準言語処理系に採用しています。

C++ Builder編集

概要
C++ Builderコンパイラは、エンバカデロ社のコンパイラ。無料版もあるが、ダウンロードには登録が必要。かつてボーランド社の開発していたコンパイラ Borland C++ Compiler を買収したもの。
ライセンス形態
(価格:無料版あり、 商用利用:?、コンパイラのソース公開:非公開)
プラットフォーム
準拠規格
ANSI/ISO C++言語
公式サイト(無料版)
https://www.embarcadero.com/jp/products/cbuilder/starter/free-download

統合開発環境編集

Visual Studio Community編集

要点編集
概要
C++、C#、Visual Basic、F# などの統合開発環境。
ライセンス形態
(価格:無料版あり、商用利用:○、コンパイラのソース公開:非公開)
商用利用は個人開発者と一部の中小企業に限る。詳細:https://visualstudio.microsoft.com/ja/
プラットフォーム
Windows, macOS
準拠規格
ISO/IEC 9899:2011[9][10]、および ISO/IEC 14882:2018[11]
公式サイト(コミュニティ)
https://visualstudio.microsoft.com/ja/vs/community/
インストール時の注意事項編集
インストールの準備

インストール時にHDD/SSDの容量が必要になり、最終的に20GBから50GBのHDD/SSDの容量を要求される場合もあります[12]。もし使用しているWindowsで確保しているパーティション容量が20GBよりも小さいなら、あらかじめOSをインストールしなおすなどして。VSをインストールするパーティションを多めに確保しておく必要があります[12]


Visual Studio では、あらかじめ .NET Framework というアプリケーション開発・実行環境のほぼ最新バージョンが必要ですので、それらもインストールしておく必要があります[13][12]

さらに、.NET Framework の最新版をインストールするためには、Windows Update によって最新の状態に保つ必要があるので(もし最新の状態に保ってないと、マイクロソフト公式サイトで.NET Framework 最新版だけを単独でダウンロードしてインストーラーを起動しても、インストーラーが途中で中断するなどして、インストールを続行できない場合があります)、

なので、Windows Update によって、ほぼ最新の状態になるまでアップデートしておく必要があります。


このため、Visual Studioをインストールできるようにするための事前の Windowsアップデートに、時間が数日かかる場合もあるので、あらかじめ夜中の睡眠中にアップデートを実行するなどして準備しておこう。


インストーラーの実行
インストールの準備が整ったら、マイクロソフト公式サイトからインストーラーをダウンロードし実行します。
ダウンロード時やインストール時などに、Visual Studio 無料版はマイクロソフト社のVisual Studio コミュニティの会員登録が必要になります。
コンパイラの追加
Visual Studio の初期設定だけでは、単なるテキストエディターですので、初期設定だけではコンパイラが付属しておらず、なんのプログラム言語もコンパイルできません。
なので、Visual Studio に付属するC言語コンパイラの追加の設定をする必要があります。

Visual Studioのスタート画面などから、「C++によるデスクトップ環境」や「ユニバーサルWindowsプラットフォーム環境」などの名前の2つのコンポーネントを追加インストールできるので、それぞれ追加インストールしましょう。

C++のコンポーネントの中に、C言語用のコンパイラも含まれています。

Visual StudioでC言語コンパイラを使うためには、インストール時に「C++」や「C#」などの内から「C++」を選びます。

どの種類の新規ファイルを作成すべきか
Visual Studio で新規のファイルを作成しようとすると、作成するファイルの種類が多く出てきます。
C言語での開発には、C++用の「コンソール アプリ」を選びます。
C++モードからC言語モードへの切り替え
プロジェクトを作ると、1つソースファイルが作られます(プロジェクト Project1 ならば Project1.cpp)。
最初にそのソースファイルの拡張子を .cpp から .c にソリューション エクスプローラーで変更します(Project1.cpp なら Project1.c に変更します)。
これでコンパイラをC++モードから C言語モードに切り替えることが出来ました。

]Visual Stuidoでもソースコードの拡張子を .cpp でなく .c にすればコンパイラは「C言語モード」でコンパイルし、#include <iostream>がソースコードに含まれるとコンパイルエラーとなるし、シンボルに名前修飾は施されません。

以前の編集で、 『C++用でなく「C言語」専用のコンパイラを入手しようにも、マイクロソフト社は、C++コンパイル機能の無い「C言語」専用のコンパイラは、提供していない。』 とありましたが担当編集者の誤解で、Visual C++ にはC言語モードがあります。

Visual Studio で、デバッグ セッションの終了時にコンソールが閉じてしまう場合

Visual Studio で、デバッグ セッションの終了時にコンソールが閉じてしまう場合は、

[ツール] -> [オプション] -> [デバッグ] -> [デバッグの停止時に自動的にコンソールを閉じる]

を無効にします。


その他、注意事項編集

コンパイラごとの個性編集

コンパイラごとに、文法が少し違っている場合もある。

そのため、初心者は、いくつかの無料コンパイラを併用するのが良いだろう。

自作したプログラムのライセンスについて編集

コンパイラには、そのコンパイラのソースコードが公開されているもの(GNU のコンパイラ)と、非公開のもの(例えばVisual Studio など)があります。

ソース非公開のコンパイラで開発したプログラムでも、自分の自作したプログラムのソースを公開するのは、一般的に自由です。

GNUの場合、GNU標準のライセンスが「GPL」といって、やや特殊なので、よく分からなければ、他のVisual Studio などGCC以外のコンパイラで制作するのが安全だろう。


PowerShellを使う場合編集

実はWindows7のSP1以降のWindowsには、コマンドプロンプトとは別に、最新型のPowerShellというコマンドインタープリターが入っています。

PowerShellを使う場合、コマンドプロンプトとの仕様の違いがある(IEEE 1003.2 POSIX Shell Standard に影響を受けている)。

カレントフォルダーにあるファイルを実行したい場合、

.\ファイル名

で実行します。 これは主にセキュリティが理由で、環境変数 PATH に . が含まれていないからです(コマンドプロンプトでは PATH に . が含まれるので、冒頭の「.\」が不要です)。

たとえば「a.exe」というファイル名があるなら、

.\a.exe

が実行コマンドになります。

Windowsでオープンソース製コンパイラのGCCを使う場合、コマンドはPowerShellでもコマンドプロンプトでも同じです。 つまり、たとえば「test1.c」ファイルをgccコンパイルしたいなら、PowerShellでも

gcc test1.c

です。

脚註編集

  1. ^ あるいは、自力で使用する境界検査インターフェース版の標準関数を用意する解決方もありますが、sanf_s関数の規模になると何度が高いです。
  2. ^ strcpy_sとstrncpyは引数の順序が異なるほか長さの上限に達した時の挙動も異なるので、単純に置き換えることはできません。
  3. ^ Windows XP, Vista, 7, 8.1, 10ではnotepad.exe
  4. ^ Windowsではコンパイラは付属していない模様。別途インストールが必要です。
  5. ^ LLVM Release License
  6. ^ LICENSE.TXT”. llvm.org. 2019年9月24日閲覧。
  7. ^ The LLVM Compiler Infrastructure Project”. 2021年8月7日閲覧。
  8. ^ Clang C Language Family Frontend for LLVM”. 2021年8月7日閲覧。
  9. ^ Microsoft,『/std (Specify Language Standard Version』.
  10. ^ /std:c11 オプションで ISO C11 準拠が有効になります。この機能は、Visual Studio 2019バージョン16.8から利用できます。
  11. ^ /std:c17 オプションで ISO C17 準拠が有効になります。この機能は、Visual Studio 2019バージョン16.8から利用できます。
  12. ^ 12.0 12.1 12.2 Microsoft,『Visual Studio 2019 Product Family System Requirements』.
  13. ^ インストールする為に.NET Framework 4.5.2以降が必要、インストールの過程で .NET Framework 4.7.2 がインストールされる(2021年8月3日時点)

参考文献編集