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


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
0312
ジュン2#includeを含むマクロがエラーになる3解決


ジュン2

リンク

2018/3/12(Mon) 15:07:35|NO.82725

	#define includeArtlet2d #include "a2d.hsp"
includeArtlet2d
とだけ書いてコンパイルすると2行目でエラー2: 文法が間違っています が発生します。
なぜなのか気になります



この記事に返信する


いののて

リンク

2018/3/12(Mon) 15:16:43|NO.82726

先頭に、#cmpopt ppout 1を追加して、出力されたマクロ置き換え後のスクリプトを見てみると、
#defineで置き換えしたときに「(空白)#include "a2d.hsp"」がそのまま展開されずに放置されていました。
なので、構文解析時に行頭にあってはならないはずの空白が見つかったため、エラーになったんだと思います。



あまら

リンク

2018/3/12(Mon) 18:05:28|NO.82729

少々強引な手ですが、

#define includeArtlet2d %c #include "a2d.hsp"
として改行(%cの箇所)を入れるとエラーにはならないようです。


スペース無しのこちらでも可

#define includeArtlet2d %c#include "a2d.hsp"



ジュン2

リンク

2018/3/12(Mon) 19:51:10|NO.82733

なるほど
・普通に直接命令を書いてコンパイルすると、hsptmp.iでは行頭のスペースやタブが削除された状態になっている
・#defineマクロを使ったプログラムをコンパイルすると、hsptmp.iではマクロ展開部分の直前に余分なスペースが入っていて、それが行頭だろうが残存してしまう
%cを入れておくとコンパイルが通るのも説明が付きますね
#defineの不具合と考えておきます



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