C 基本講座

ファイルを分割する

LinkedInラーニングの無料トライアルを今すぐ試そう

無料で視聴する すべての加入プランを見る
このレッスンでは、プログラムを複数のファイルに分けて分割コンパイルを行う方法について説明します。
講師:
08:07

字幕

このレッスンではプログラムを複数のファイルに分けて分割コンパイルを行う方法について説明します。ある程度の規模のプログラムを開発する場合には1つのファイルにすべての関数を記述するのではなく、複数のファイルに分けて記述します。ここではサンプルプログラムを Eclipse を使って複数のファイルに分けて記述しながらファイル分割について説明していきます。このプログラムは配列を使ってスタックを実現するものです。スタックは後入れ、先出しのデータ構造です。重ねた皿のように後から入れたデータを先に取り出します。このプログラムでは push 関数でデータをスタックに入れ、pop 関数でスタックからデータを取り出します。main 関数ではユーザーが文字 i と、そして整数値を入力するとpush 関数を呼び、o を入力するとpop 関数を呼ぶようになっています。スタックを実現する配列 stack と現在の入出力位置を示すスタックポインタの sp はpush 関数からもpop 関数からも参照できるようにグローバルで宣言しています。尚、Windows 版のEclipse では scanf の前にprintf があるとコンソールビューからの入力がうまく実行できません。 そのため setvbuf 関数でbuf を使わないようにしています。では実行してみましょう。このように後入れ先出しで処理を行うことが確認できます。ではこのプログラムを2つのファイルに分けて記述してみましょう。まず新しくプロジェクトを作ります。ここでは 07_07_02という名前でプロジェクトを作成することにします。そうしたら、ソースフォルダーを作成しましょう。そしてソースフォルダーの中にソースファイルを作ります。main.c という名前で作成してください。もう1つ作成します。stack.c という名前で作成します。ではこの stack.c に先ほどのプログラムからpush 関数と pop 関数をコピーして貼り付けます。マクロ定義とグローバルな変数と配列もコピーして貼り付けてください。次に main.c にmain 関数を貼り付けます。この push と pop のプロトタイプ宣言からmain 関数をすべてコピーしてmain.c に貼り付けてください。printf と scanf を使っているのでinclude の stdio.h も記述してください。保存しましょう。そうしたらビルドしてみます。 ビルドするとこのようにmain.c と stack.c からそれぞれオブジェクトファイルが作成されていることが確認できます。このように個別にコンパイルされることを分割コンパイルと呼びます。リンクの過程ではこの2つのオブジェクトファイルとライブラリ関数が結合されて実行ファイルが作成されます。では実行してみましょう。このように push・pop できることが確認できますね。このように問題なく動きますが、実は修正すべき点があります。main 関数でこの push 関数と pop 関数のプロトタイプ宣言を記述していますがソースファイルを分割した際には通常プロトタイプ宣言はヘッダーファイルに記述し、それを include します。そうすれば main.c 以外のファイルからこれらの関数を使うのに別々にプロトタイプ宣言を記述しなくて済みます。ではヘッダーファイルを作成しましょう。このソースファイルの格納されているフォルダーにヘッダーファイルを作成します。ここでは main.h という名前をつけてください。するとこのようなファイルが出来上がります。この#から始まる文はコンパイルの前処理を行うプリプロセッサー指令です。 詳細は省略しますが、通常ヘッダーファイルは複数のファイルで include されるのでこの記述で二重 include を防いでいます。include ガードと呼ばれたりします。この部分に main.c で記述していたこのプロトタイプ宣言を切り取って、そして貼り付けてください。main.c の方ではこの main.h を include します。この時、ファイル名は山括弧ではなくダブルクォーテーションで囲んでください。ユーザー定義のヘッダーファイルはダブルクォーテーションで囲んで記述します。ヘッダーファイルにはプロトタイプ宣言の他にマクロ定義、構造体の定義、列挙体の定義などを記述します。構造体と列挙体については次のチャプターで学習します。では保存してコンパイルして実行してみましょう。このようにきちんと実行することが確認できますね。このレッスンではプログラムを複数のファイルに分けて分割コンパイルを行う方法について説明しました。

C 基本講座

C言語はUNIXというOSを記述するために開発されたプログラミング言語で、組み込みシステムの開発を中心に今も使われています。このコースでは簡単なプログラムを作成しながら、C言語の基本的な文法を学びます。データ型や制御文などの基礎的な文法からポインタや構造体といったC言語の特徴的な内容まで幅広く取り上げます。よく使われる標準ライブラリ関数も数多く紹介します。

5時間45分 (60 ビデオ)
現在、カスタマーレビューはありません…
ソフトウェア・トピック
プラン加入者限定
発売日:2017年11月05日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。