HOME > プログラミング > 命令関数の自作 > プログラムを分ける

#module #global命令関数の自作 プログラムを分ける

 

プログラムのファイル分割
独自に命令や関数を自作するときは、ほかのプロジェクトでも使用できるようにファイルを分割し、同じような処理をまとめたグループを作成しておくといいでしょう。
ここでは複数のファイルでプログラムを書く準備を説明します。
はじめに自作の関数や命令をまとめるプログラムのグループを作ります。これをHSPではモジュールと言います。
#module モジュール名
#global

サブプログラムファイル(subprog.hsp)
#module sample	//命令関数群の開始行
//ここからグループのプログラムを書くところ


#global	//命令関数群の終了行

命令名:#module「プログラムの分割開始点(新しい命令関数群の作成)」
モジュール名:sample「サンプル」
命令名:#global「プログラムの分割終了点」
サブプログラムファイルは、自作関数や命令のプログラムを書くプログラムファイルです。
このソースファイルを他のメインプログラムから読み込んでもらいます。


 

インクルードガード
分割したサブプログラムファイルは、主たるプログラムファイルから呼び出されます。プログラムファイルをたくさん分割させた大きなプロジェクトのとき、別のプログラムファイルでも同じサブプログラムファイルを読み込んで開発していたとして、最終的に全て結合したプログラムファイルを実行すると、同じプログラムを二度読み込んでしまい、エラーになります。
そこで、一度読み込まれたサブプログラムを他のプログラム内で読み込まれそうになったときに、既に読み込んでいるので次は読み込まないという仕組みを付加します。それがインクルードガードです。
モジュール名の両端には「_」を2つずつ付け、インクルードガードの名前定義として分かるようにしておきます。
モジュール名は#moduleで定義した名前を使用すると良いでしょう。
#ifndef __モジュール名__
#define __モジュール名__
#endif

サブプログラムファイル(subprog.hsp)
#ifndef __sample__
#define __sample__

#module sample	//命令関数群の開始行
//ここからグループのプログラムを書くところ


#global	//命令関数群の終了行

#endif

命令名:#ifndef「もしモジュール名が定義されていれば対応する#endifまで有効なプログラムとする」
モジュール名:__sample__「サンプル」
命令名:#define「定義を定める」
定義名:__sample__「サンプル」
(#moduleから#globalまでの処理)
命令名:#endif「#ifdefに対応する有効なプログラムとする終了行」
すなわち、サブプログラムを読み込みはじめに、__sample__という定義がされていない場合、
__sample__が定義され、かつ対応する#endifまでの内容がプログラムとして認識します。
再度このサブプログラムが読み込まれそうになっても、__sample__が定義済みとなっているので、
#ifndefの部分以下のプログラムは読み込まれなくなる仕組みです。
ここまでできたら「subprog.hsp」というファイル名でデスクトップに保存しましょう。


 

メインプログラムから読み込む
分割したサブプログラムをメインプログラムに読み込みます。
ファイルパスとは、読み込むサブプログラムファイルの場所(ディレクトリ)とサブプログラムのファイル名に拡張子「.hsp」を付けたものです。
#include "ファイルパス"

メインプログラムファイル(mainprog.hsp)
#include "subprog.hsp"	//サブプログラムを読み込む

命令名:#include「外部のプログラムを読み込む」
ファイルパス:"subprog.hsp"「サブプログラムファイル」
上記のファイルができたら「mainprog.hsp」というファイル名で「subprog.hsp」を保存した同じ場所のデスクトップに保存しましょう。

当サイトコンテンツの複写・転載・引用は禁止しております。