Haxe 用点定义
Haxe defines with dot
在 Haxe 中,用点引用定义的正确方法是什么?
例如,对于库thx.core
,如何根据库名编写条件编译?
#if thx.core
#end
另外,特殊字符有通用规则吗?
#if flag
语法似乎无法处理点。
但是,Compiler.getDefine()
处理大多数字符,包括点:
hxml/build 命令:-D é'"(-è_.çà)=test
#if "é'\"(-è_çà)"
trace('will always be called, even without the -D');
#end
trace(haxe.macro.Compiler.getDefine("é'\"(-è_.çà)")); // test
有一个带有初始化宏的点的解决方法,即使它不是很漂亮:
build.hxml
-x Main.hx
-D abc.def
--macro Macro.parseDefines()
Macro.hx
import haxe.macro.Compiler;
class Macro {
public static macro function parseDefines():Void {
if (Compiler.getDefine("abc.def") != null) {
Compiler.define("abc_def");
}
}
}
Main.hx
class Main {
public static function main() {
#if abc_def
trace("abc.def is defined!");
#end
}
}
在thx.core
的情况下,可以使用thx_core
(带下划线):
#if thx_core
#end
据我所知,除了连字符 (those get translated into underscores by the compiler) 之外,没有对特殊字符的一般支持。
thx.core
库 defines -D thx_core
itself, using haxelib's support for extraParams.hxml
。
Starting with Haxe 4.0.0-rc.2,在 #if
中允许使用点定义,只要它们被括号括起来:
#if (thx.core)
#end
#if thx.core
没有括号 will likely also work in the future.
在 Haxe 中,用点引用定义的正确方法是什么?
例如,对于库thx.core
,如何根据库名编写条件编译?
#if thx.core
#end
另外,特殊字符有通用规则吗?
#if flag
语法似乎无法处理点。
但是,Compiler.getDefine()
处理大多数字符,包括点:
hxml/build 命令:-D é'"(-è_.çà)=test
#if "é'\"(-è_çà)"
trace('will always be called, even without the -D');
#end
trace(haxe.macro.Compiler.getDefine("é'\"(-è_.çà)")); // test
有一个带有初始化宏的点的解决方法,即使它不是很漂亮:
build.hxml
-x Main.hx
-D abc.def
--macro Macro.parseDefines()
Macro.hx
import haxe.macro.Compiler;
class Macro {
public static macro function parseDefines():Void {
if (Compiler.getDefine("abc.def") != null) {
Compiler.define("abc_def");
}
}
}
Main.hx
class Main {
public static function main() {
#if abc_def
trace("abc.def is defined!");
#end
}
}
在thx.core
的情况下,可以使用thx_core
(带下划线):
#if thx_core
#end
据我所知,除了连字符 (those get translated into underscores by the compiler) 之外,没有对特殊字符的一般支持。
thx.core
库 defines -D thx_core
itself, using haxelib's support for extraParams.hxml
。
Starting with Haxe 4.0.0-rc.2,在 #if
中允许使用点定义,只要它们被括号括起来:
#if (thx.core)
#end
#if thx.core
没有括号 will likely also work in the future.