Почему ПУСТОЙ УКАЗАТЕЛЬ является необъявленным?

В более общем смысле отсутствия необходимости явно устанавливать переменные в каждом представлении, это звучит так, как будто вы хотите посмотреть на написание собственного контекстного процессора .

Из документов:

У контекстного процессора очень простой интерфейс: это просто функция Python, которая принимает один аргумент, объект HttpRequest и возвращает словарь, который добавляется в контекст шаблона. , Каждый контекстный процессор должен возвращать словарь.

78
задан unwind 29 May 2009 в 06:35
поделиться

5 ответов

NULL не является встроенной константой в языках C или C ++. Фактически, в C ++ он более или менее устарел, просто используйте вместо него простой литерал 0 , компилятор будет делать правильные вещи в зависимости от контекста.

В более новых C ++ (C ++ 11 и выше ), используйте nullptr (как указано в комментарии, спасибо).

В противном случае добавьте

#include < stddef.h >

, чтобы получить NULL определение.

127
ответ дан 24 November 2019 в 10:29
поделиться

Использовать NULL. В любом случае это просто # определено как 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*).
33
ответ дан 24 November 2019 в 10:29
поделиться

NULL не является встроенной частью основного языка C ++, но является частью стандартной библиотеки. Вам необходимо включить один из стандартных файлов заголовков, которые включают его определение. #include или #include должно быть достаточно.

Определение NULL гарантированно будет доступно, если вы включите cstddef или stddef.h . Это не гарантируется, но вы, скорее всего, получите его определение, если вместо этого включите многие другие стандартные заголовки.

14
ответ дан 24 November 2019 в 10:29
поделиться

Не используйте NULL , C ++ позволяет использовать unadorned 0 вместо:

previous = 0;
next = 0;

И, как и в C ++ 11, обычно не следует использовать NULL или 0 , поскольку он предоставляет вам nullptr типа std :: nullptr_t ,

4
ответ дан 24 November 2019 в 10:29
поделиться

Включены ли вы в этот файл "stdlib.h" или "cstdlib"? NULL определен в stdlib.h / cstdlib

#include <stdlib.h>

или

#include <cstdlib>  // This is preferrable for c++
9
ответ дан 24 November 2019 в 10:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: