IT

오류 :이 범위에서 'NULL'이 유효하지 않습니다.

lottoking 2020. 7. 20. 07:18
반응형

오류 :이 범위에서 'NULL'이 유효하지 않습니다.


gcc 4.3에서 C ++를 선택할 때이 메시지가 나타납니다.

error: ‘NULL’ was not declared in this scope

사라지고 사라지고 이유를 모르겠습니다. 왜?

감사합니다.


NULL키워드가 아닙니다. 일부 표준 헤더에 정의 된 식별자입니다. 포함 할 수 있습니다

#include <cstddef>

와 같은 다른 기본 사항을 포함하여 범위 내에서 사용하십시오 std::size_t.


GCC는 C ++ 11을 향한 조치를 취하고 따라서 NULL 상수 를 사용하여 cstddef 를 포함해야합니다 . 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.


NULL키워드가 아닙니다. 0에 대한 매크로 대체이며 stddef.h또는에 들어 cstddef갑니다. 당신은 그것을 #included++에서 볼 수 있기 때문에, 헤더 파일을 NULL일반 변수 이름으로, 당신은 그것을 선언하지 않습니다.


다른 답변을 완료 한 경우 C ++ 11을 사용 nullptr하는 경우 null을 입력하십시오 void 포인터를 의미하는 키워드 인을 사용하십시오 . ( NULL포인터 유형이 아닌) 대신


NULL은 다음 사용할 수 있습니다.

#include <string.h>

String.h는 다른 곳에서 NULL을 가져옵니다.


매크로 NULL을 선언 할 수 있습니다. #include 다음에 추가하십시오 :

#define NULL 0

또는

#ifndef NULL
#define NULL 0
#endif

아니 ";" 지시의 끝에 ...

참고 URL : https://stackoverflow.com/questions/462165/error-null-was-not-declared-in-this-scope

반응형