C言語の開発環境をVisual Studio 2013 Express for Windows Desktopを用いて構築します。VisualStudioではC++の開発が行えます。しかし、C++とC言語は微妙に違います。たとえば、型変換や、intの省略などで違いが出てきます。C++はC言語よりも安全性と正確性を高めるための工夫がされています。このため、C言語用に作られたプログラムをコンパイルしようとすると、その違いのせいでコンパイルエラーになることがしばしばあります。

Visual Studio 2013 ExpressによるC言語開発環境構築手順

1. プロジェクトの作成

C言語ソフトの開発環境構築-プロジェクトの作成

最初にC言語ソフトのプロジェクトを作るために、ファイルメニューから「新しいプロジェクト…」を選択し、表示されたダイアログで、テンプレートを「Win32コンソールアプリ…」にします。名前、場所、ソリューション名は、希望する名称及び場所を設定します。

C言語ソフトの開発環境構築-空のプロジェクト

Win32アプリケーションウィザードが実行されるので、アプリケーションの設定ウィザードで「空のプロジェクト」にチェックを入れて、「完了」します。

C言語ソフトの開発環境構築-プロジェクト作成完了

Win32アプリケーションウィザードの実行が終了すると、「ソリューション エクスプローラー」が表示され、作成したプロジェクトが表示されます。

2. コンパイル言語の選択

コンパイル言語の選択

プロジェクトメニューの「(プロジェクト名)のプロパティ」を選択して、プロパティダイアログを表示します。そのダイアログのツリービューの中の、「構成プロパティ」=>「C/C++」=>「詳細設定」を選択します。右側のエリアに「コンパイル言語の選択」が表示されるので、ドロップダウンさせ「C コードとしてコンパイル (/TC)」を選択します。この操作で純粋なC言語としてコンパイルできます。

3. C言語ソースファイルの作成

C言語ソフトの開発環境構築-ソースファイルの作成

「ソリューション エクスプローラー」の中の「ソースファイル」を指定して、 右クリックして登場するメニューから「追加」/「新しい項目」を選択します。

C言語ソフトの開発環境構築-ソースファイルの作成

次の画面となるので 「C++ ファイル」を選択し、 ファイル名として Source.cのような C ファイルを指定します(拡張子をcにします) 。追加ボタンを押すと、「ソリューション エクスプローラー」の中の「ソースファイル」のしたにSource.cのソースファイルが作成され、ソースコードが入力できる状態になります。

4. C言語ソースコードの入力

C言語ソフトの開発環境構築-C言語ソース入力

次に示すCソースを入力します。

/* header files */
#define _CRT_SECURE_NO_WARNINGS
#define snprintf    _snprintf

#include <stdio.h>
#include <stdlib.h>

/* macros */
#define N 256

/* main */
int main(void) {
    char s1[N] = {'\0'};
    char s2[N] = {'\0'};
    int i = 10000;
    double x = 200.123;

    sprintf(s1, "%d", i);
    snprintf(s2, N, "%.4f", x);

    fprintf(stdout, "s1: %s\n", s1);
    fprintf(stdout, "s2: %s\n", s2);

    return EXIT_SUCCESS;
}

gccのコンパイラと違って、Visual StudioでC言語のプログラムをコンパイルすると、次の警告もしくはエラーが発生します。

  • strcpy、sprinitfなどでコンパイル時に警告発生します。バッファー・オーバーランの原因になるので、安全な別関数(strcpy_s、sprintf_sなど)の使用を推奨してきます。今回は、define で定義して、コンパイル時の警告を止めました。
    #define _CRT_SECURE_NO_WARNINGS
  • snprintfを使っていてgccでは普通にビルド出来てたプログラムを、VisualStudio 2013でビルドすると、 snprintf 関数が定義されていないというエラーになりました。VisualStudioについている標準ライブラリではsnprintfはサポートしていないみたいです。次のようにdefine でsnprintfを定義しました。
    #define snprintf    _snprintf

5. 作成したCプログラムの実行

C言語ソフトの開発環境構築-Cプログラムの実行

作成したC言語プログラムを実行した結果を示します。