我想用 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 }};
(拆分每个设置过程)。但是当我尝试运行它时,我看到了这个错误
'加载':重新定义;不同的基本类型
我该怎么办?我不想用
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;
如果您要使用字符串文字作为初始值设定项。
关于c++ - 在结构数组中设置多行错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32170536/