2014-03-19 33 views
0

我在头文件错误c2099 initlizer不是一个常量我怎样才能摆脱这种错误的

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

http://stackoverflow.com/questions/18743276/error-c2099-initializer-is-not-a-constant –

+0

@HeenaGoyal这个例子是没有帮助我吗? 在这个例子中,你已经建议它已经I2c_send初始化,但我直接在这里给值? 有点困惑,你能说清楚吗? – Naidu

+0

看到我编辑的代码,即'struct node * pNext;'和一些分号,因为我试过的代码在我身边。 –

回答

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; 
} 
+0

不,我在我的代码中有它,但忘了它在这里发布它,但仍然代码无法正常工作?我正在使用visual studio – Naidu

+0

@ user3388427 ::如果您的代码中包含该代码,请发布可重现错误的确切代码。请在您的问题中编辑代码。 – Abhineet

+0

我已经在visual studio 2010中运行它。它没有给出任何错误 –

相关问题