错误c2099 initlizer不是const我怎么能摆脱这个错误

时间:2014-03-19 06:06:01

标签: c++ visual-c++

我的头文件中有以下内容

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如何删除此错误? 为什么会出现这个错误?

1 个答案:

答案 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;
 }