![]() |
1
6
不确定你是否会喜欢这个技巧,但是你可以使用一个解析转换。 我们首先定义一个基本的解析转换模块:
编译它,然后您可以在希望它工作的模块中包含这两个头。这应给出以下信息:
如果您使用的是R14B并编译它,那么应该具有如下所示的模块抽象格式:
这告诉我们,我们可以同时使用这两个头,有效的头将自动包含,而另一个将出错。我们要做的就是把
这将删除错误包含,仅当它在您需要的精确模块上。其他乱七八糟的包括应该照常失败。 我还没有在所有版本上测试过,所以如果它们之间的行为发生了变化,这就不起作用。另一方面,如果保持不变,这个parse_转换将是独立于版本的,代价是需要对模块的编译顺序进行排序,这对于Emakefiles和rebar来说非常简单。 |
![]() |
2
2
如果使用makefile,可以执行以下操作 ERTS|VER=$(外壳erl+V 2>&1 |出口-o'[0-9]+[0-9]+[0-9]+[0-9]+') 然后在erlc参数或Emakefile中匹配字符串并定义宏。 别无选择,阿飞。 |
![]() |
Imad Hamaidi · 如何使预处理器宏在编译之前对代码求值 2 年前 |
![]() |
R overflow · R以每行一个字符串的方式粘贴输入 6 年前 |
![]() |
pasha · C++:宏参数中可以有空格吗? 7 年前 |
![]() |
Zorglub29 · 使用宏显示宏的字符串化内容 7 年前 |
![]() |
Detonar · 检查预处理器符号(#define)的值 7 年前 |
![]() |
СеÑгей · MinGW中预处理器g++的奇怪行为 7 年前 |