在struct数组中设置多行错误

时间:2015-08-23 19:17:38

标签: c++ c struct

我想用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_Fu​​nctions
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 }};

我该怎么办?我希望每个模块都有函数名称,并在程序中的每个位置加载它。

1 个答案:

答案 0 :(得分:0)

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

如果程序是用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;

如果您打算使用字符串文字作为初始值设定项。