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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0901
Lisa#define 時のエスケープについて5解決


Lisa

リンク

2011/9/1(Thu) 23:30:55|NO.41006

みなさんこんにちは

以下のスクリプトは、全て「HELLO % WORLD」と出力されそうなのですが、
最後の #define だけはエラーになってしまいます。


AAA = "HELLO % WORLD" mes AAA mes "HELLO % WORLD" mes strf("%s %% %s", "HELLO", "WORLD") #define BBB "HELLO % WORLD" mes BBB

#define では % をエスケープしなければならないのでしょうか?
これに関する資料や情報をご存知でしたら、教えてください。
よろしくお願いします。

(hsp3.3 win7)



この記事に返信する


fortunehill

リンク

2011/9/1(Thu) 23:36:39|NO.41007

strfをマクロ中に使う時も下記の方法でOKです。


#define BBB "HELLO %% WORLD"



Lisa

リンク

2011/9/2(Fri) 20:24:30|NO.41022

fortunehillさん、ありがとうございます。

> strfをマクロ中に使う時も

という意味がよく分からないのですが、
やりたいことは、単純に文字列を定義したいだけです。

なぜ、
#define BBB "HELLO % WORLD"

がエラーになってしまうのか、 なぜ、
#define BBB "HELLO %% WORLD"
とすればエラーが回避され、しかも1つの % になるのか、
ということが理解できません。

よろしくお願いします。



Cookies

リンク

2011/9/2(Fri) 21:16:59|NO.41024


mes "あ\nい"

で改行されることはご存知ですか? そして「\」を表示させたい場合

mes "\\"
とすればいいことはご存知でしょうか。

また、ダブルクォーテーションマークを表示させたい場合は

mes "\""
というのはご存知でしょうか。

#defineの%にも、特別な意味があります。
#define hyouji(%1) mes %1
hyouji "あ"
とした場合「hyouji "あ"」というのが「mes "あ"」に置き換わるのです。
それならhyoujiをmesにすればいいと思うかもしれませんが、
#define hyouji2(%1,%2) mes %2+%1
hyouji2 "あ","い"
のようにすることも可能です。


そういった風に%には特別な意味があるため、特別な意味をなくす方法が必要です。
それが%を二つ重ねるということです。
というよりも、前の%が、後ろの%の意味をなくすという意味を持っているという感じでしょうか。


初めに書いた\も同じです。



Cookies

リンク

2011/9/2(Fri) 21:17:59|NO.41025

あー、閉じるタグを忘れてしまったようです。
本当にすいませんが、どうにか読んでください。



Lisa

リンク

2011/9/2(Fri) 21:46:42|NO.41029

Cookiesさん、ありがとうございます。

> で改行されることはご存知ですか?
> そして「\」を表示させたい場合 ... とすればいいことはご存知でしょうか
> また、ダブルクォーテーションマークを表示させたい場合は ... というのはご存知でしょうか。

はい、知っております。

> #defineの%にも、特別な意味があります。

これも少しは知っているのですが、
文字や文字列内の % も特殊文字として判断してしまうことは知りませんでした。


こういう使い方が出来るんですね↓

#define debug(%1) mes "%1 = " + %1 a = 10 + 118 debug a
【実行結果】a = 128

どうもありがとうございます!



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