错误C2099:初始化程序不是常量
Protocol.h
typedef struct sDevice_d { char name[24]; signed int (*Send)(unsigned char*, unsigned short); signed int (*Recv)(unsigned char*, unsigned short); } sDevice_d, *psDevice_d;
Device.c
#include "Protocol.h" sDevice_d sDevice = { "ten", I2c_Send }; psDevice_d psDevice = &sDevice; static signed int I2c_Send(unsigned char* buf, unsigned short len) { return 0; }
在上面的代码中我收到以下错误:
错误C2099:初始化程序不是常量
请帮我解决这个问题。
我正在使用Visual Studio Win32应用程序。
在尝试使用初始化列表中的结构创建和初始化结构之前,需要定义和显示函数I2c_Send。 我在下面包含了对您的代码的修改,在两个文件中说明了这一点:
protocol.h
typedef struct { char name[24]; signed int (*Send)(unsigned char*, unsigned short); signed int (*Recv)(unsigned char*, unsigned short); } S_DEVICE; //prototype here static signed int I2c_Send(unsigned char* buf, unsigned short len);
device.c
#include "protcol.h" S_DEVICE sDevice_d = {"ten", I2c_Send, I2c_Send}; int main(void) { return 0; } //define here static signed int I2c_Send(unsigned char* buf, unsigned short len) { return 0; }
这个源使用ANCI C编译器(使用C99扩展)编译和构建,并且应该在Visual Studio,Win32环境中产生类似的结果。