時乃工房-Windowsとアマグラマーな関係-

アクセスアップにオートリンクネット リンクが自動で増殖オートリンクの登録はこちら 節約内職情報検索局
ページランク向上リンク集
役立つリンク集 Web Links
SEO対策ディレクトリ型検索エンジン Su-Jine
メニュー
トップ
アマグラミング
C++編 目次
第1章
第3章
ソフトウェア開発製品
相互リンク

<勘違いだらけのアマグラミングな日々(C++編)>

第2章 Cのソースは関数の塊 (2)

2006年7月26日

前章ではプロトタイプ宣言なる文法を利用してみたわけだが、本章ではそれを更に推し進め(?)ヘッダーファイルに吐き出してみることにする。

//"header.h"
//List000-006
//関数のプロトタイプ宣言
int     F(  int);
//"main.cpp"
//List.000-006
//f(x)=ax+bをプログラミング

#include        "header.h"      //製作したヘッダをインクルードする

int     main( void)
{
       int     answer= 0;

       answer= F(  3);

       return  0;
}

//関数本体
int     F(  int  x)
{
       return  7* x+ 5;
}
ソースのダウンロード

"#include"とは、前章で台本のト書きに例えたプリプロセッサ命令と云うものだ。
これを元にコンパイラが"header.h"を読み込むわけだが、私はファイルをマクロ展開しているようなイメージでこれを使っている。

インクルードの対象となるファイルは、どんな拡張子でも良い。
"*.cpp"のようなソースファイルでも、そのまま置き換えてくれる。
ルートも書き込めるものだから、昔は結構無茶苦茶なソースを書いたものである。

いまでもあんまり良く理解していないところを感じるわけで、誰か良いヘッダファイルの書き方をレクチャーしてくれないものだろうか。

それはともかく、ヘッダーファイルの次はこんなことにチャレンジしてみる。

//"header.h"
//List.000-007
//関数のプロトタイプ宣言
int     F(  int);
//"main.cpp"
//List000-007
//f(x)=ax+bをプログラミング

#include        "header.h"

int     main( void)
{
       int     answer= 0;

       answer= F(  3);

       return  0;
}
//"function.cpp"
//List.000-007
//関数本体

int     F(  int  x)
{
       return  7* x+ 5;
}
ソースのダウンロード

別ファイルに書いた関数がそのまま呼出されている為、最初は何か不思議な感じがするものの、同じプロジェクトに上の3つのファイルを放り込むと、ちゃんと実行ファイルがビルドされる。

なぜかといえばリンカが引っ付けてくれるからなのだが、あくまでインクルードはコンパイラの仕事で、"main.cpp"とfunction.cpp"はリンカがつなげるんだとイメージすると判り易いのではないだろうか。

ちなみに、私はmakeを書いたことが無い

便利なツールを手に入れてしまった、アマグラマーの特権(?)だと思っている。

最後に、ずっと気になっていた計算結果を表示してみた。

/*
 Title    :List.000-008
 Filename:"header.h"
*/


//関数のプロトタイプ宣言-------------------------------------
int     F(  int);
/*
 Title    :List.000-008
 Filename:"main.cpp"
*/


//インクルードファイル---------------------------------------
#include        <stdio.h>                  //標準入出力関連の関数を使うときに必要
#include        "header.h"

//エントリーポイント-----------------------------------------
int     main( void)
{
       int     answer= 0;

       answer= F(  3);
       printf( "Answer= %d\n", answer);        //標準出力に出力する関数

       return  0;
}
/*
 Title   :List.000-008
 Filename:"function.cpp"
*/


//F(x)=7x+5----------------------------------------------
int     F(  int  x)
{
       return  7* x+ 5;
}
ソースのダウンロード

ソースの作成からビルドまでの流れを適当に捉えたところで、大分自信がついてきた。
折角の機会なので、次回はいろいろと疑問に感じていたことを実験してみようと思う。

<前章> <目次> <次章>





<時乃工房>
Net Office Nakai
メビウスリング投稿掲示板には小説日記ゲームアニメコミック小学生中学生などの掲示板過去ログがあります。相互リンクも募集中。