使用C中的一组常量结构初始化结构

时间:2013-05-08 03:32:00

标签: c visual-c++ struct

我正在MSVC中编写设备驱动程序。作为设计的一部分,我希望有不同的模块,但模块之间有些相互隔离,以便将来可以互换。我的设计有一个带有以下声明的结构

typedef struct tagMODULE_INTERFACE {
  NTSTATUS (*initialize)(GLOBAL_DATA *pGD);
  NTSTATUS (*shutdown)(void);
  NTSTATUS (*sendResponse)(PVOID outBuf, ULONG outBufSz, PULONG outBufLen); 
} MODULE_INTERFACE, *PMODULE_INTERFACE;

在主.c文件中,我有我的主要模块阵列在安装时加载。它定义如下:

MODULE_INTERFACE modules[2] = 
{
    Module1, 
    {NULL, NULL, NULL}// terminal entry
};

在我的module1.c文件中,我公开了以下内容:

CONST MODULE_INTERFACE Module1 = {initializeModule1, shutdownModule1, sendModule1Response};

在我的module1.h文件中,我有:

extern CONST MODULE_INTERFACE Module1;

这里的想法是我不必在module1.c之外声明initializeModule1,shutdownModule1和sendModule1Response函数,但是main.c将有一个函数指针数组,用于在必要时初始化,关闭和回调。

我的问题是我在模块中的Module1条目中获得了C2099“初始化不是常量”错误,并且我为{NULL,NULL,NULL}条目获得了C2078“太多初始化器”。 / p>

我在这里缺少什么?我原本以为如果我确保在main.c之前编译module1.c它将解决第一个问题,但它没有。

非常感谢任何帮助。

0 个答案:

没有答案