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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0222
YSR#constの訳分からん仕様が判明したわけだが……5解決


YSR

リンク

2014/2/22(Sat) 00:55:31|NO.60179

コード書いてる時に#constの定数が反映されないから調べてたら、とんでもない事実が判明した。
以下のコードは再現可能な範囲で省略したもの。


#define SRCCOPY 0x00CC0020 #define CAPTUREBLT 0x40000000 #const CONST SRCCOPY | CAPTUREBLT #const BoardOffsetY 134 #const BlockOffsetY BoardOffsetY + 14 mes BlockOffsetY

これをHSP3.4beta2で実行すると0と表示されると思う。だが、
「#const CONST SRCCOPY | CAPTUREBLT」をコメントアウトすると148と表示される。
勿論どっちも定数として必要なので困った困った……。


追記:
色々試すとどうやら「CONST」という変数名がいけないらしい。
そんな重大なことはヘルプに書いておいてくれよ……orz



この記事に返信する


ソイスープ

リンク

2014/2/22(Sat) 02:02:15|NO.60180

本当ですね。気づきませんでした。



KA

リンク

2014/2/22(Sat) 06:46:45|NO.60183

だって const だろ?
include でも define でも同じだろうと推測する。



saracena

リンク

2014/2/22(Sat) 07:01:51|NO.60185

こういうのもあります。

#const a 1.0 / 0.1 ; 整数部が0の数で割るとエラー #const double a 1.0 #const b a ; 少数部が0だとエラー



kanahiron

リンク

2014/2/22(Sat) 10:21:19|NO.60188

ちなみに
#define define "こんちくわ"
#define define2 "こんばんは" mes define mes define2
は正常です



HK2

リンク

2014/2/23(Sun) 22:00:03|NO.60238

HSPではマクロ名の大文字小文字が区別されないために、3行目の
#const CONST SRCCOPY | CAPTUREBLT

でconstが1087111200と定義され、 4行目の
#const BoardOffsetY 134
が、
#1087111200 BoardOffsetY 134

に展開されたのが原因なのかもしれません。 また、define,undef,ifdef,ifndef,else,endif,globalは別の挙動をするようです。



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