c++の前回の追記

前回は、ヘッダファイルの話をしました。

そこでヘッダファイルには、関数の宣言を書き、別にファイルを作成し、定義を記述するという趣旨の内容を紹介しましたので、今回は追記しようと思います。

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コメント

  • 1000 / 1000