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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0801
レノス#include の不具合?5解決


レノス

リンク

2009/8/1(Sat) 01:02:10|NO.26657

※HSP3.2RC1 でのみ確認しています。HSP3.1では不明。

#include して結合されたファイルの内部で、そのファイル自身からの相対パスで別のファイルを #include している場合、ファイルの検索に失敗します。

例えば、以下のケースでは、header.as を発見できません。

コンパイルエラーメッセージ:
#HSP script preprocessor ver3.2rc1 / onion software 1997-2009(c)
#Use file [hspdef.as]
#Use file [userdef.as]
#Source file not found.[test_header.as]
#Error: in line 1 [sub/test_sub.as]
#Fatal error reported.
#Error: in line 1 [test.hsp]
#Fatal error reported.

[test.hsp] @ D:/test

#include "sub/test_sub.as" mes HelloWorld()

[test_sub] @ D:/test/sub

#include "sub_header/test_header.as" #module #defcfunc HelloWorld return STR_HELLOWORLD #global

[test_header.as] @ D:/test/sub/sub_header

#define global STR_HELLOWORLD "Hello, world!"



この記事に返信する


ANTARES

リンク

2009/8/1(Sat) 03:13:13|NO.26658

 相対パスはカレントディレクトリに対する相対パスで
なければなりません。3.1でも(たぶんhsp2でも)同じです。

>#include "sub_header/test_header.as"
#include "sub/sub_header/test_header.as"



レノス

リンク

2009/8/1(Sat) 12:50:10|NO.26660

ありがとうございます。



レノス

リンク

2009/8/1(Sat) 13:22:28|NO.26661

むむむ。

#include 先が、同じ階層のファイルを #include する場合は問題ないので、
相対パスで、#include 先を基点にした記述もできてることになります。
ということは、トップで示したスクリプトも動くはずでは。
( ※前者が規格外なのかもしれませんが…… )

(例) ( コンパイルが通る、[*] はフォルダ )

[test] | |-- test.hsp ( #include "sub/test_sub.as" ) | |-- [sub] | | | |-- test_sub.as ( #include "test_header.as" ) | |-- test_header.as



KIMU

リンク

2009/8/1(Sat) 16:30:55|NO.26666

コンパイル時
カレントディレクトリ=ソースファイルのあるフォルダ
相対パス=カレントディレクトリからの相対パス
ファイル名=#includeの書かれてるファイルのフォルダ内

[#include "ファイル名"だけ指定した時に探されるフォルダ] test/test.hsp [test/] test/sub/test_sub.as [test/sub/] test/sub/sub_header/est_header.as [test/sub/sub_header/]
相対パスを付ける場合はカエントディレクトリから



レノス

リンク

2009/8/1(Sat) 23:11:01|NO.26673

わかりました。
ありがとうございます。

[解決]



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