我的头文件中有以下内容
typedef unsigned int FRAMEBIT;
typedef struct Msg_Node
{
FRAMEBIT Msg_Id;
FRAMEBIT MSg_Indx;
FRAMEBIT Msg_Size;
struct cmd_Header* pcmd_attr;
struct Msg_Node *pNext;
}Msg_Node_T;
并在源文件中
static Msg_Node_T MSG[ 6 ] = {
{ 0 , 112 , &MSG[1]} ,
{ 113 , 32 , &MSG[2]} ,
{ 146 , 64 , &MSG[3]} ,
{ 211 , 72 , &MSG[4]} ,
{ 284 , 64 , &MSG[5]} ,
{ 349 , 32 , 0}
};
并获得error c2099 initliazer is not a constant
如何删除此错误?
为什么会出现这个错误?
答案 0 :(得分:0)
此代码在g ++ 4.8.1中编译并运行,没有问题。你在node_T typedef之后忘记了分号了吗?我添加了那个和我大写的节点(编辑:你好像在你的例子中已经修复了)。 (我在MSG初始化中也稍微改了一下但没什么重要的。)除此之外,代码是一样的。
#include <iostream>
typedef unsigned int FRAMEBIT;
typedef struct Node
{
FRAMEBIT node_size;
FRAMEBIT node_index;
struct Node *pNext;
}node_T;
static node_T MSG[ 4 ] = {
{ 0 , 112 , &MSG[1]} ,
{ 113 , 32 , &MSG[2]} ,
{ 146 , 64 , &MSG[3]} ,
{ 211 , 72 , &MSG[0]}
};
int main(){
//prints 112 as expected
std::cout << MSG[0].node_index;
return 0;
}