Нет, это не влияет на структуры и перечисления. extern(C)
в первую очередь для функций и типов указателей на функции, а иногда и для переменных, совместно используемых с C (где вы можете увидеть extern extern(C) __gshared type name;
- первый внешний вид означает, что он определен внешне (другими словами, это определение только для использования, а не распределение пространства хранения), второе значение, определенное для C, __gshared означает глобальную переменную стиля C.)
Но по большей части вы должны использовать его только для функций и указателей на функции. Определения структуры даже не должны строго соответствовать - например, имена вообще не имеют значения, а в некоторых случаях и содержимое не имеет значения (если оно передается только через указатель, вы можете избежать непрозрачное определение - нет тела к структуре).