2017-04-20 85 views
0

使用类似链表的结构会产生问题。 当我声明2倍的值(我的结构),它 返回错误:C++结构没有被声明为这个范围

this VALUE_NAME was not declared this scope

这是源的一部分。

struct _node 
{ 
    int val; 
    _node* prev; 
    _node* next; 
}; 
typedef struct _node node; 

node* HEAD; 

void deleteALLNode() 
{ 
    node* node = HEAD; 
    node* _tmp; 

// 
// here _tmp value return error 
// 
} 
+0

“VALUE_NAME”在哪里? – stanleyli

+1

'node'是'typedef struct _node'。它也是一个指向同一个'struct'的指针吗? – CinCout

+0

VALUE_NAME是_tmp。对不起 – CancerYoon

回答

1

你不能用相同名称和类型命名你的变量(你可以一次也许,但是你不能使用没有编译错误的类型)。只需将node* node = HEAD;变量的名称更改为其他内容即可,例如node* pNode = HEAD;

+0

谢谢!我按照你的方式修复它。 – CancerYoon

+0

如果您自己修复了问题,请在您的问题中添加自己的答案并接受它,以便任何有相同问题的人都能快速找到解决方案:-) – Mischo5500

-2

如果是C++,你可以直接使用_node,无需typedeftypedef结构是C风格。

struct _node 
{ 
    int val; 
    _node* prev; 
    _node* next; 
}; 

_node* HEAD; 

void deleteALLNode() 
{ 
    _node* node = HEAD; 
    _node* _tmp; 
} 
+0

它返回相同的错误。 _tmp未在此范围内声明。 – CancerYoon

+0

它通过GCC 4.9.2。你正在使用哪种编译器? – stanleyli

+0

哦!是的,我使用gcc 447 – CancerYoon