HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0101
kanamaru#deffuncや#defcfuncのパラメータについて1未解決


kanamaru

リンク

2020/1/1(Wed) 12:55:27|NO.89146

今hspでとあるプログラムを作っているのですが、
そのプログラムで奇妙なことが起きていることに気が付きました。
#deffuncや#defcfuncで定義した命令って引数の省略はできませんよね?
今作っているプログラムで定義している命令は文字列と整数の二つの引数を
受け取る命令なのですが、ふたつめの引数の整数を省略しても
エラーにならないことに気が付きました。
試しにいくつか確かめたところ、int型ならば引数の場所がどこであろうと省略でき、
省略したときは仮引数に0が入ることがわかりました。
これって仕様にないですよね?
(だって引数の省略はできませんってエラーが存在しますし、int以外だとこのエラー発生しますし。)
ちなみに検証に使ったプログラムは以下のものです。

#module #deffunc test int i,int i2,int i3 mes i mes i2 mes i3 return 0 #global test 1,2,3
一番下で呼び出してるところの引数を省略して実行してみてください。
また、引数の型を変えてみるとintの時だけ省略できると思います。



この記事に返信する


沢渡

リンク

2020/1/1(Wed) 23:09:11|NO.89147

前にHSP添付のモジュールの中身を覗いてみたのですが、
この「引数はintに限り省略可能で、省略時は0になる」という仕様を利用したコード記述が
結構見られましたので、マニュアルには書いてありませんが、正式な仕様なのだと思います。
まあ私なら、引数を省略可能にする時は、省略時0であってもマクロを使いますが。



ONION software Copyright 1997-2023(c) All rights reserved.