C言語の開発環境をVisual Studio 2013 Express for Windows Desktopを用いて構築します。VisualStudioではC++の開発が行えます。しかし、C++とC言語は微妙に違います。たとえば、型変換や、intの省略などで違いが出てきます。C++はC言語よりも安全性と正確性を高めるための工夫がされています。このため、C言語用に作られたプログラムをコンパイルしようとすると、その違いのせいでコンパイルエラーになることがしばしばあります。
Visual Studio 2013 ExpressによるC言語開発環境構築手順
1. プロジェクトの作成
最初にC言語ソフトのプロジェクトを作るために、ファイルメニューから「新しいプロジェクト…」を選択し、表示されたダイアログで、テンプレートを「Win32コンソールアプリ…」にします。名前、場所、ソリューション名は、希望する名称及び場所を設定します。
Win32アプリケーションウィザードが実行されるので、アプリケーションの設定ウィザードで「空のプロジェクト」にチェックを入れて、「完了」します。
Win32アプリケーションウィザードの実行が終了すると、「ソリューション エクスプローラー」が表示され、作成したプロジェクトが表示されます。
2. コンパイル言語の選択
プロジェクトメニューの「(プロジェクト名)のプロパティ」を選択して、プロパティダイアログを表示します。そのダイアログのツリービューの中の、「構成プロパティ」=>「C/C++」=>「詳細設定」を選択します。右側のエリアに「コンパイル言語の選択」が表示されるので、ドロップダウンさせ「C コードとしてコンパイル (/TC)」を選択します。この操作で純粋なC言語としてコンパイルできます。
3. C言語ソースファイルの作成
「ソリューション エクスプローラー」の中の「ソースファイル」を指定して、 右クリックして登場するメニューから「追加」/「新しい項目」を選択します。
次の画面となるので 「C++ ファイル」を選択し、 ファイル名として Source.cのような C ファイルを指定します(拡張子をcにします) 。追加ボタンを押すと、「ソリューション エクスプローラー」の中の「ソースファイル」のしたにSource.cのソースファイルが作成され、ソースコードが入力できる状態になります。
4. 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言語プログラムを実行した結果を示します。