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


HSPTV!掲示板


未解決 解決 停止 削除要請

2025
0405
ハリサカdefineでの自作命令デフォルト引数設定ついて。逆にうまくいく理由が分からない2解決


ハリサカ

リンク

2025/4/5(Sat) 11:26:48|NO.103340


// 何故これでうまくいくのか分からない define // デフォルト引数が設定できて、かつ命令名は同じで済む #define global Function( %1=100, %2=200 ) なぜこれで動くのだろう %1, %2 // 本来の(?)デフォルト引数が欲しい時の define // ただ、違う命令名にしなければならない #define FunctionB( %1=100, %2=200 ) Function %1, %2 //--------- // 自作命令 #module #deffunc Function int p1, int p2 mes " " + p1 + " " + p2 return #global //--------- Function , 2 // 第1引数は省略 FunctionB , 2 // 第1引数は省略


こんにちは。
自作命令のデフォルト引数を設定したくて、define を使ってみたのですが
引数を省略するときもしないときも、同じ命令名で済まないかなと試していたところ、
global修飾子 で意図どうりの処理ができました。

しかし、global はモジュールの垣根を超えて使えるようにするもので
Function が "なぜこれで動くのだろう" という文字に置き換わり、エラーになるハズなのでは?
と思ったのですが、逆にこれでうまく動いてしまう理由がわかりません。
global にはそういう機能があるのでしょうか? よろしくお願いいたします
素っ頓狂な質問でしたら、ご容赦下さい。



この記事に返信する


GENKI

リンク

2025/4/5(Sat) 18:14:52|NO.103342

> #define global Function( %1=100, %2=200 ) なぜこれで動くのだろう %1, %2
これで次のような書き換えが行われているようです。

> #define FunctionB( %1=100, %2=200 ) Function %1, %2
> #deffunc Function int p1, int p2
> Function , 2 // 第1引数は省略

> #define FunctionB( %1=100, %2=200 ) なぜこれで動くのだろう %1, %2
> #deffunc なぜこれで動くのだろう int p1, int p2
> なぜこれで動くのだろう , 2 // 第1引数は省略

> #define global Function( %1=100, %2=200 ) mes "hello";なぜこれで動くのだろう %1, %2
例えばこのようにすると#deffuncの行を書き換えていることがわかります。

また、HSP3では日本語の命令や変数が使用できるので問題なく動作します。



ハリサカ

リンク

2025/4/5(Sat) 21:01:28|NO.103344

命令名が同じで済むとかいう問題ではなく、
命令の名前自体書き換えちゃっていたのですね

そのうえ手前勝手な思い込みで
変数や命令/関数名に全角日本語 -> 違和感がある = 使えないハズ
と考えてしまっておりました。 

GENKI様 回答ありがとうございました。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.103340への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>~</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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