沒有宣佈GCC 4.3錯誤:「NULL」在此範圍
error: ‘NULL’ was not declared in this scope
它出現和消失編譯C++時,我得到這個消息,我不知道爲什麼。爲什麼?
謝謝。
沒有宣佈GCC 4.3錯誤:「NULL」在此範圍
error: ‘NULL’ was not declared in this scope
它出現和消失編譯C++時,我得到這個消息,我不知道爲什麼。爲什麼?
謝謝。
NULL
不是關鍵字。它是一些標準頭文件中定義的標識符。您可以包括
#include <cstddef>
有它的適用範圍,包括一些其他的基本知識,如std::size_t
。
上帝,我非常寵壞Java(null是一個關鍵字),我從來沒有想過NULL不會是C++中的關鍵字。感謝:) – 2011-10-04 19:45:28
NULL
不是關鍵字;這是一個0的宏替代,我相信stddef.h
或cstddef
。您沒有#included
適當的頭文件,因此g ++將NULL
視爲常規變量名稱,並且您尚未聲明它。
GCC正在採取步驟C++ 11,這可能是爲什麼你現在需要包括cstddef爲了使用NULL不變。 C++ 11的首選方式是使用新的nullptr關鍵字,該關鍵字自4.6版以後在GCC中實現。 nullptr不隱式轉換爲整數類型,因此它可以用來消除對已經超負荷兩個指針和整型函數的調用:
void f(int x);
void f(void * ptr);
f(0); // Passes int 0.
f(nullptr); // Passes void * 0.
要完成其他答案:如果你是使用C++ 11,使用nullptr
,這是一個關鍵字,意味着一個空指針指向null。 (而不是NULL
,這不是指針類型)
您可以聲明宏NULL。添加後您的#includes:
#define NULL 0
或
#ifndef NULL
#define NULL 0
#endif
否 「;」在教學和指導。
也許你沒有在消息的來源範圍內聲明NULL? – 2009-01-20 17:08:33
您應該至少發佈提供錯誤的完整代碼。否則,通過查看錯誤字符串將很難分辨出發生了什麼。 – Naveen 2009-01-20 17:11:44