前回は、ヘッダファイルの話をしました。
そこでヘッダファイルには、関数の宣言を書き、別にファイルを作成し、定義を記述するという趣旨の内容を紹介しましたので、今回は追記しようと思います。
mainソースファイルは
#include<iostream>
#include"sample_h.h"
using namespace std;
int main(){
cout << keisan1(2, 3) << endl;
cout << keisan2(3, 3) << endl;
return 0;
}
ヘッダファイルsample_h.h
int keisan1(int a, int b);
int keisan2(int a, int b);
関数定義ファイルsample_h.cpp
#include<iostream>
#include"sample_h.h"
using namespace std;
int keisan1(int a, int b){
cout << "keisan1が実行されます" << endl;
int c;
c = a * b;
return c;
}
int keisan2(int a, int b){
cout << "keisan2が実行されます" << endl;
int c;
c = a + b;
return c;
}
このようにファイルを3分割にしてもコンパイル可能です。
g++ -o sample_main sample_main.cpp sample_h.cpp
を実行します。このとき、mainとは別にsample_h.cppも含めたコンパイルで完了です。
インクルードガードは、ヘッダファイルを
#ifndef 名前
#define 名前
int keisan1(int a, int b);
int keisan2(int a, int b);
#endif // 名前
のようにすることです。
または、#pragma onceとだけ記述します。
まあ自分は最初のインクルードガードを書きます。この辺は趣味なので。
ただ、いくらコンパイラ依存といえデータ量を減らすには少しでも文字数は少なくする必要がありますし、どちらもメリットがあるかと。
用途に応じて使い分けるのがベストですが。
0コメント