태그 보관물: gcc

gcc

오류 :이 범위에서 ‘NULL’이 선언되지 않았습니다. was not

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. 당신이하지 않은 #includedg ++에서 볼 수 있도록, 적절한 헤더 파일을 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

아니 “;” 지침 끝에 …


답변