外部(C)在D到C的接口中?

外部(C)在D到C的接口中?,d,extern,D,Extern,当D与C接口时,我是否需要externC用于结构和枚举 extern(C) enum XX { A, B } extern(C) struct Z { int x; } 我需要上面的externC才能正确呼叫吗 extern extern(C) void f(XX a, Z b) ?否,它对结构和枚举没有影响。externC主要用于函数和函数指针类型,有时也用于与C共享的变量,您可能会看到extern externC\uu gshared type name;-第一个extern表示它是在

当D与C接口时,我是否需要externC用于结构和枚举

extern(C) enum XX { A, B }

extern(C) struct Z { int x; }
我需要上面的externC才能正确呼叫吗

extern extern(C) void f(XX a, Z b)

否,它对结构和枚举没有影响。externC主要用于函数和函数指针类型,有时也用于与C共享的变量,您可能会看到extern externC\uu gshared type name;-第一个extern表示它是在外部定义的,换句话说,这个定义只是为了使用,而不是存储空间分配,第二个extern表示为C定义的,uu gshared表示一个C风格的全局变量

但在大多数情况下,您应该只在函数和函数指针上使用它。结构定义甚至不必严格匹配——例如,名称根本不重要,而且在某些情况下,内容也不重要——如果它只是通过指针传递和访问的,您可以使用不透明的定义——结构没有主体