C 到 D 中的结构数组
Array of struct in C to D
所以我尝试为 D 编程语言制作我自己的 PAWN sdk,我知道已经有 D 的 PAWN sdk 但我只想尝试自己制作它。
当我将此 C 代码转换为 D:
时出现奇怪的问题
struct tagAMX;
typedef cell (*AMX_NATIVE)(struct tagAMX *amx, cell *params);
typedef struct tagAMX_NATIVE_INFO {
const char *name;
AMX_NATIVE func;
} AMX_NATIVE_INFO;
我已经将它转换为 D 代码:
struct AMX;
alias AMX_NATIVE = cell function(AMX* amx, cell* params);
struct AMX_NATIVE_INFO {
immutable(char)* name;
AMX_NATIVE func;
}
我写对了吗?如果代码没问题,请忽略它。
主要问题在这里:在C中
AMX_NATIVE_INFO PluginNatives[] =
{
{"HelloWorld", HelloWorld},
{0, 0}
};
D 上怎么写?我试过:
AMX_NATIVE_INFO[] NativeInfo =
[
["HelloWorld", HelloWorld],
[0, 0]
];
它只是给我错误:
function test.HelloWorld (AMX* amx, int* params) is not callable using argument types ()
cannot implicitly convert expression ([0, 0]) of type int[] to AMX_NATIVE_INFO
尝试
AMX_NATIVE_INFO[] NativeInfo =
[
AMX_NATIVE_INFO("HelloWorld", &HelloWorld),
AMX_NATIVE_INFO(null, null)
];
或
AMX_NATIVE_INFO[] NativeInfo =
[
{"HelloWorld", &HelloWorld},
{null, null}
];
阅读 this 了解有关结构的更多详细信息。
所以我尝试为 D 编程语言制作我自己的 PAWN sdk,我知道已经有 D 的 PAWN sdk 但我只想尝试自己制作它。
当我将此 C 代码转换为 D:
时出现奇怪的问题struct tagAMX;
typedef cell (*AMX_NATIVE)(struct tagAMX *amx, cell *params);
typedef struct tagAMX_NATIVE_INFO {
const char *name;
AMX_NATIVE func;
} AMX_NATIVE_INFO;
我已经将它转换为 D 代码:
struct AMX;
alias AMX_NATIVE = cell function(AMX* amx, cell* params);
struct AMX_NATIVE_INFO {
immutable(char)* name;
AMX_NATIVE func;
}
我写对了吗?如果代码没问题,请忽略它。
主要问题在这里:在C中
AMX_NATIVE_INFO PluginNatives[] =
{
{"HelloWorld", HelloWorld},
{0, 0}
};
D 上怎么写?我试过:
AMX_NATIVE_INFO[] NativeInfo =
[
["HelloWorld", HelloWorld],
[0, 0]
];
它只是给我错误:
function test.HelloWorld (AMX* amx, int* params) is not callable using argument types ()
cannot implicitly convert expression ([0, 0]) of type int[] to AMX_NATIVE_INFO
尝试
AMX_NATIVE_INFO[] NativeInfo =
[
AMX_NATIVE_INFO("HelloWorld", &HelloWorld),
AMX_NATIVE_INFO(null, null)
];
或
AMX_NATIVE_INFO[] NativeInfo =
[
{"HelloWorld", &HelloWorld},
{null, null}
];
阅读 this 了解有关结构的更多详细信息。