#defcfunc

新規関数を登録する

#defcfunc p1 p2 p3,…

p1      : 登録する関数の名前
p2 p3~ : パラメータータイプ名・エイリアス名

解説

ユーザーによる新規関数を登録します。
p1に新規関数の名前を、p2以降に呼び出しパラメータタイプを指定します。
#defcfunc命令で定義した名前をスクリプト内で関数として使用することが可能になります。

新規関数は、 #defcfuncで指定された行以降が実行される内容になります。実行はgosub命令と同じくサブルーチンジャンプとして行なわれ、 return命令でもとの実行位置に戻ります。
その際にreturn命令に戻り値のパラメーターを指定する必要があります。

例 :
	#defcfunc half int a
	return a/2

追加された新規関数ではパラメータを受け取ることができるようになります。
それぞれのパラメータには、パラメータタイプとエイリアス名の指定が可能です。指定するパラメータタイプには以下のものがあります。

   int     :  整数値
   var     :  変数(配列なし)
   array   :  変数(配列あり)
   str     :  文字列
   double  :  実数値
   local   :  ローカル変数

エイリアス名は、渡されたパラメーターの内容を示すもので、変数とほとんど同じ感覚で使用することができます。
varとarrayの使い分けには注意が必要なほか、 ローカル変数を示すlocalタイプは特殊な用途となります。
詳しくは、プログラミングマニュアル(hspprog.htm)のモジュール項目を参照してください。

新規関数の名称は、通常すべてのモジュール空間、グローバル空間で共有されます。
ただし、local指定の後に名称を指定した場合は、モジュール固有のものとして扱われます。

例 :
	#module user
	#defcfunc local test int a
	return a+5
	#global
	mes test@user(5)

これは、モジュール内でのみ使用される関数を定義する場合などに使用することができます。
local指定により登録された名称は、必ず「名称@モジュール名」の形式で呼び出す必要があります。

関連項目

returnサブルーチンから復帰
#deffunc新規命令を登録する

サンプル逆引き (7)

12_floatとfloatintの違い.hsp
d3m.hsp
defcfunc.hsp
demo.hsp
multimon.hsp
SampleDiskInfo.hsp
volsamp.hsp

情報

バージョン3.5
作成日2017/09/13
著作者onitama
URLhttp://hsp.tv/
備考ver3.5標準命令
タイプ内蔵命令
グループプリプロセッサ命令
対応環境
  • Windows 版 HSP
  • コマンドライン版 HSP
  • HSPLet
移植のヒントHSPLet時、引数の型は str/int/double/var/array のみサポートされています。
local などは指定できません。
hs ファイルhsphelp\i_prep.hs