【发布时间】:2025-11-27 21:50:02
【问题描述】:
我有一个可以为多个平台编译的 Erlang 程序。
我想要的是为不同平台分离代码。 解决这个问题的最 Erlang 方法是什么?
我想实现这样的目标:
-module(platform_1).
-export([platform_init/0, platform_do_work/1, platform_stop/0]).
...
-module(platform_2).
-export([platform_init/0, platform_do_work/1, platform_stop/0]).
...
-module(main).
-export([start/0]).
main() ->
platform::init(),
platform::do_work("The work"),
platform::stop().
(显然上面的代码不起作用,它缺少我要询问的部分。)
- 我可以将这两个模块命名为
platform,并在编译期间只提供其中一个。 - 我可以在
platform模块中使用-ifdefs来包装特定于平台的模块。 - 我可以使用
-behavior指定一个通用合同。 - 我可以使用带有
-export宏的头文件来提供通用合约。
我确信还有其他解决方案。我只是没有为这个一般用例找到任何成语。
【问题讨论】: