extern(C)对Dlang函数类型的影响

时间:2019-01-05 11:26:04

标签: function d

如果在extern(C)内定义了函数类型别名,如以下示例所示:

extern(C) {
  alias F = void function(int x);
}

这是否可以保证别名类型为extern(C)

还是我需要写

extern(C) {
  alias F = extern(C) void function(int x);
}

或者只是

alias F = extern(C) void function(int x);

要这样做吗?

1 个答案:

答案 0 :(得分:1)

是的,有作用域的属性或声明适用于其作用域内的所有符号(除非它们明确覆盖了它或嵌套作用域覆盖了它)。 证明:

extern(C) {
  alias F = void function(int x);
}
alias G = void function(int x);
alias H = extern(C) void function(int x);

pragma(msg, F.mangleof); // PUiZv
pragma(msg, G.mangleof); // PFiZv
pragma(msg, H.mangleof); // PUiZv

选中it out for yourself on run.dlang.io