2017-04-20 84 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