设置结构数组中的多行错误

Set multi line error in struct array

本文关键字:错误 结构 数组 设置      更新时间:2023-10-16

我想用c++创建一个模块系统。以下是我的程序,没有问题。

void First_Modules()
{
    // Anything ...
}
void Second_Modules()
{
    // Anything ...
}

typedef void(*Func) ();
struct All_Modules
{
    char *Name;
    Func This_Function;
};
struct All_Modules Load_All_Functions[] = { {"Load_Modules_1", First_Modules }, {"Load_Modules_2", Second_Modules }};

我的问题是,我想发送模块信息到Load_All_Functions而不使用

struct All_Modules Load_All_Functions[] = { {"Load_Modules_1", First_Modules }, {"Load_Modules_2", Second_Modules }};

我想要这样的东西:

struct All_Modules Load_All_Functions[] = { {"Load_Modules_1", First_Modules }};
struct All_Modules Load_All_Functions[] = { {"Load_Modules_2", Second_Modules }};

(拆分每个集合进程)。但是当我尝试运行这个时,我看到了这个错误'Loads': redefinition; different basic types

我该怎么办?我不想用

struct All_Modules Load_All_Functions[] = { {"Load_Modules_1", First_Modules }, {"Load_Modules_2", Second_Modules }};

我想把它们完全分开,像

struct All_Modules Load_All_Functions[] = { {"Load_Modules_1", First_Modules }};
struct All_Modules Load_All_Functions[] = { {"Load_Modules_2", Second_Modules }};

我该怎么办?我想有每个模块的函数名,并加载它在程序的每一个地方。

在这种情况下,不需要声明结构

的数组。

如果程序是用C编写的,那么试试下面的

struct All_Modules Load_All_Functions;
Load_All_Functions = ( struct All_Modules ){"Load_Modules_1", First_Modules };
Load_All_Functions = ( struct All_Modules ){"Load_Modules_2", Second_Modules };

在c++中可以写

struct All_Modules Load_All_Functions;
Load_All_Functions = {"Load_Modules_1", First_Modules };
Load_All_Functions = {"Load_Modules_2", Second_Modules };

考虑到在c++中数据成员name必须像

那样声明
const char *Name;