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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
1017
tsuka可変長引数を使えないかな12解決


tsuka

リンク

2009/10/17(Sat) 21:13:04|NO.28347

HSPで可変長引数の関数は定義できないのでしょうか。
配列で渡す方法も考えたのですが、ひとつ余分な配列変数を作らなければならないのは気になります。
もしできないのであれば配列を使った方法を使いますが、もし他の解決策、または妥協策があれば教えてください。



この記事に返信する


ANTARES

リンク

2009/10/17(Sat) 22:24:31|NO.28351

 可変個引数の間違いでは?
可変長引数は文字列ならバンバン使えます。
それとも数値の可変長引数?



tsuka

リンク

2009/10/17(Sat) 22:25:52|NO.28353

あ、可変個引数の方です。失礼しました。



tsuka

リンク

2009/10/17(Sat) 22:31:25|NO.28355

(可変長引数も可変個引数も同じことを意味するようです。たぶん可変長のほうがめじゃー



レノス

リンク

2009/10/17(Sat) 22:35:40|NO.28356

ググった感じでは、可変長引数も可変個引数もどうやら同じようですが……。

#defcfunc などでは、そのような関数は実装できません。
プラグインを作るか、ランタイムを弄るかしかないです。

#妥協策について、配列では型が1つに縛られてしまいますが、大丈夫でしょうか?



ANTARES

リンク

2009/10/17(Sat) 22:51:22|NO.28357

 HSPEXINFO構造体を使うDLLを作れば可能です。

 たぶん、モジュールやマクロを使ってやりたいのだろうと思い、
汎用関数をDLLで作って何とかならないかと考えてみましたが、
マクロにしてもモジュールにしても、引数が可変個であることを
指定する書式が定義されない限り無理です。

 妥協策について。
モジュール変数を使えば型が複数あっても何とかなりそうですが、
めんどくさそうです。


※たとえ、「可変長引数」を「可変個引数」の意味で使うのが一般的であるとしても、
誤解されやすい表現は避けるべきでしょう。



tsuka

リンク

2009/10/17(Sat) 22:53:09|NO.28358

>レノスさん
配列にはポインタしか代入しないので大丈夫です

ランタイムやプラグインを作る技術力は持ち合わせていないので、何か他の策はないでしょうか



check

リンク

2009/10/17(Sat) 22:56:22|NO.28360

文字列として結合して、後で切り出す



tsuka

リンク

2009/10/17(Sat) 23:06:40|NO.28361

>ANTARESさん
無理ですか。やはり配列を使う方法が一番簡単そうですね。

一応、配列を使う方法で解決、としますが、もしさらに良い解決策を思いついた方は是非教えてください。

(HSPの自作関数定義機能にはもっと良くなってもらいたいです。この可変長引数もそうだし、デフォルト値とか変数と定数とか・・・
(それと、個人的な考えですが、一般的な言い方を使った方が伝わりやすいのが常だと思います。



ANTARES

リンク

2009/10/17(Sat) 23:11:10|NO.28362

>デフォルト値とか
 マクロはデフォルトが指定できるので、
マクロ経由で呼び出すようにすれば、デフォルトの設定は可能です。



てる

リンク

2009/10/17(Sat) 23:31:15|NO.28363

なんだか変なの(というと作者に失礼だけど)をみつけました
http://prograpark.ninja-web.net/
の、←のフレームにある「ソフト・モジュール/のたまり場」というところの、
「CALL」というヤツ

ラベルを命令・関数の代わりに使うようにできる模様です
引数の数は可変長でもかまわない、てかチェックされないみたい



tsuka

リンク

2009/10/18(Sun) 00:01:40|NO.28364

>ANTERSさん
それはしっているであります。普通の言語だと(int a=0)とかって指定できるじゃないですか。
そこをHSPだとわざわざマクロを使わなければいけないってところに不満があるのです。
デフォルト値を指定しなければならない関数の数だけマクロを指定するのは面倒です。

>checkさん
それだと使う側に負担がかかりすぎますよ。



tsuka

リンク

2009/10/18(Sun) 00:06:06|NO.28365

>てゐさん
面白そうですね!これは普通に使ってみたいです。
ただ、この問題の解決に使えるかはわかりませんが・・・



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