답변:
NULL
키워드가 아닙니다. 일부 표준 헤더에 정의 된 식별자입니다. 포함 할 수 있습니다.
#include <cstddef>
.NET과 같은 다른 기본 사항을 포함하여 범위에 포함 std::size_t
됩니다.
nullptr
되므로 실제 키워드이고 #include
s가 필요하지 않은 키워드를 언급 할 가치가 있습니다 . 또한 NULL
.
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
내장 키워드가 아닙니다. <stddef.h>
(또는 <cstddef>
)을 포함하여 여러 표준 C 헤더에 정의 된 매크로 입니다. gcc가 "C ++ 11을 향한 발걸음"이 어떻게 영향을 줍니까? 질문에서 (보이지 않는) 코드가 이전 버전의 gcc / g ++ 또는 이전 버전의 언어 표준으로 컴파일되었음을 의미하는 것은 없습니다.
다른 답변을 완료하려면 : C ++ 11을 사용 nullptr
하는 경우 null을 가리키는 void 포인터를 의미하는 키워드 인를 사용하십시오. ( NULL
포인터 유형이 아닌 대신 )