gpt4 book ai didi

compilation - Dart 中有编译器预处理器吗?

转载 作者:行者123 更新时间:2023-12-04 14:01:17 26 4
gpt4 key购买 nike

由于在启动 dart 应用程序之前需要进行编译,我想知道编译器预处理器是否可用,或者是否计划在不久的将来用于 Dart。
到目前为止,我在网上/Dart 网站内的搜索均未成功。

(通过预处理器,我的意思是:

#define max(A,B)    ( (A) > (B) ? (A):(B)) 

或者 :

#define NumType double
#define NumTypeZero 0.0

// used with :
NumType myNum = NumTypeZero;

或者 :

#define DEBUG 

// use
#ifdef DEBUG
print('var1 : $var1, var2:$var2, ...');
#endif

)

编辑:我想知道为什么还没有预处理器,因为从那时起我们似乎“接近”了:
- Dart 必须扫描文件中的库依赖项才能以正确的顺序加载库。
- Dart 编辑器还会扫描文件以进行语法、类型检查和其他检查。
- 可以在编辑器中启动一些自动文件处理(我找不到有值(value)的链接,如果你有的话,请告诉我)。

最佳答案

基本上其他人说的...

如果您使用 dart2js 进行编译,如果 DEBUG 是常量且为 false,则摇树将已经抛出 if (DEBUG) {} 块内的代码。所以你可以只使用 if 语句。

您还可以使用 assert() 语句。在使用 dart2js 编译生产模式时,断言和传递给它的表达式将被丢弃。

所以这实际上与您使用 #ifdefs 获得的行为相同 - 您可以将 dart2js 视为您的预处理器 ;)

我也没有看到您为什么要使用 #defines 而不是常量的任何理由。

如果你想在 DartVM 中运行你的代码,你可以使用 dart2js --output-type=dart 在你的 dart 源上做 tree-shaking。

更新:另见 String.fromEnvironment() , bool.fromEnvironment() , 和 int.fromEnvironment() .您可以在编译时使用“dart2js -D = ”设置这些环境变量。

关于compilation - Dart 中有编译器预处理器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20288002/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com