我尝试编译此代码时遇到此结构构造函数的问题:
typedef struct Node
{
    Node( int data ) //
    {
        this->data = data;
        previous = NULL; // Compiler indicates here
        next = NULL;
    }
    int data;
    Node* previous;
    Node* next;
} NODE;
当我来这个错误发生时:
\linkedlist\linkedlist.h||In constructor `Node::Node(int)':|
\linkedlist\linkedlist.h|9|error: `NULL' was not declared in this scope|
    ||=== Build finished: 1 errors, 0 warnings ===|
最后一个问题是结构,但它在我的main.cpp中运行正常,这次是在头文件中并且给我这个问题.我正在使用Code :: Blocks来编译此代码
unw*_*ind 128
NULL不是C或C++语言中的内置常量.事实上,在C++中它或多或少已经过时,只需使用普通文字0,编译器将根据上下文做正确的事情.
在较新的C++(C++ 11及更高版本)中,使用nullptr(如评论中所指出的,谢谢).
否则,添加
#include <stddef.h>
得到NULL定义.
小智 33
请使用NULL.无论如何它只是#defined为0,从语义上将它与整数0区分开来非常有用.
使用0(因此为NULL)存在问题.例如:
void f(int);
void f(void*);
f(0); // Ambiguous. Calls f(int).
下一版本的C++(C++ 0x)包括nullptr解决这个问题.
f(nullptr); // Calls f(void*).
CB *_*ley 14
NULL它不是核心C++语言的本机部分,但它是标准库的一部分.您需要包含一个包含其定义的标准头文件.#include <cstddef>或者#include <stddef.h>应该足够了.
NULL如果您包含cstddef或,则保证定义可用stddef.h.它不能保证,但如果你包含许多其他标准头文件,你很可能会得到它的定义.
你在这个文件中包含"stdlib.h"或"cstdlib"吗?NULL在stdlib.h/cstdlib中定义
#include <stdlib.h>
要么
#include <cstdlib>  // This is preferrable for c++
| 归档时间: | 
 | 
| 查看次数: | 170925 次 | 
| 最近记录: |