gpt4 book ai didi

attributes - 有没有办法在 D 编程语言中覆盖模块的主要功能?

转载 作者:行者123 更新时间:2023-12-04 23:28:59 24 4
gpt4 key购买 nike

如果确实需要,可以指定__attribute__((weak))在 C 中(参见 scriptedmain)。这允许程序兼作 API 和可执行文件,允许导入 API 的代码覆盖主函数。

D有办法做到这一点吗? Python 有 if __name__=="__main__": main() ,但 weak C 中的语法似乎更接近。

最佳答案

是的,使用版本指令,这需要 rdmd 和 dmd 的特殊选项。

脚本main.d:

#!/usr/bin/env rdmd -version=scriptedmain

module scriptedmain;

import std.stdio;

int meaningOfLife() {
return 42;
}

version (scriptedmain) {
void main(string[] args) {
writeln("Main: The meaning of life is ", meaningOfLife());
}
}

测试.d:
#!/usr/bin/env rdmd -version=test

import scriptedmain;
import std.stdio;

version (test) {
void main(string[] args) {
writeln("Test: The meaning of life is ", meaningOfLife());
}
}

例子:
$ ./scriptedmain.d
Main: The meaning of life is 42
$ ./test.d
Test: The meaning of life is 42
$ dmd scriptedmain.d -version=scriptedmain
$ ./scriptedmain
Main: The meaning of life is 42
$ dmd test.d scriptedmain.d -version=test
$ ./test
Test: The meaning of life is 42

也张贴在 RosettaCode .

关于attributes - 有没有办法在 D 编程语言中覆盖模块的主要功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7803636/

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