gcc 4.3에서 C ++를 컴파일 할 때이 메시지가 나타납니다.
error: ‘NULL’ was not declared in this scope
나타나고 사라지고 이유를 모르겠습니다. 왜?
감사.
답변
NULL
키워드가 아닙니다. 일부 표준 헤더에 정의 된 식별자입니다. 포함 할 수 있습니다.
#include <cstddef>
.NET과 같은 다른 기본 사항을 포함하여 범위에 포함 std::size_t
됩니다.
답변
GCC는 C ++ 11을 향한 조치를 취하고 있으므로 NULL 상수 를 사용 하려면 이제 cstddef 를 포함해야합니다 . C ++ 11에서 선호되는 방법은 버전 4.6부터 GCC에서 구현 된 새로운 nullptr 키워드 를 사용하는 것 입니다. nullptr 은 암시 적으로 정수 형식으로 변환 할 수 없으므로 포인터 및 정수 형식 모두에 대해 오버로드 된 함수에 대한 호출을 명확하게하는 데 사용할 수 있습니다.
void f(int x);
void f(void * ptr);
f(0); // Passes int 0.
f(nullptr); // Passes void * 0.
답변
NULL
키워드가 아닙니다. 그것은 0에 대한 매크로 대체이며 stddef.h
또는 들어옵니다 cstddef
. 당신이하지 않은 #included
g ++에서 볼 수 있도록, 적절한 헤더 파일을 NULL
일반 변수 이름으로, 당신은 그것을 선언하지 않았습니다.
답변
다른 답변을 완료하려면 : C ++ 11을 사용 nullptr
하는 경우 null을 가리키는 void 포인터를 의미하는 키워드 인를 사용하십시오. ( NULL
포인터 유형이 아닌 대신 )
답변
NULL은 다음에서도 찾을 수 있습니다.
#include <string.h>
String.h는 다른 곳에서 NULL을 가져옵니다.
답변
매크로를 NULL로 선언 할 수 있습니다. #includes 뒤에 추가하십시오.
#define NULL 0
또는
#ifndef NULL
#define NULL 0
#endif
아니 “;” 지침 끝에 …