Я буду также второй CMake. Я использовал его долгое время на многоплатформенном проекте, и я очень удовлетворен им.
В C ++ вам нужно использовать NULL
, 0 или в некоторых новых компиляторах nullptr. Использование NULL
вместо 0 может быть предметом споров в некоторых кругах, но ИМХО, NULL
является более популярным использованием, чем 0.
nil
не существует в стандартном C ++. Вместо этого используйте NULL
.
Да. Это NULL
в C
и C ++
, а в Objective-C - nil
.
Каждый язык имеет свой собственный идентификатор объект. В C
стандартной библиотеке NULL
является typedef ((void *) 0)
. В C ++
стандартной библиотеке NULL
является typedef 0
или 0L
.
Однако IMHO, вы никогда не должны использовать 0 вместо NULL
, поскольку это помогает читабельности кода, так же, как наличие постоянных переменных в вашем коде: без использования NULL значение 0 используется для нулевых указателей, а также для значения базового индекса в циклах, как а также количество / размеры для пустых списков, это затрудняет определение того, какой из них какой. Кроме того, это
Я видел некоторые комментарии о том, почему не следует используйте 0. Обычно людям не нравятся магические числа или числа со смыслом. Дайте им имя. Я бы предпочел увидеть в коде ANSWER_TO_THE_ULTIMATE_QUESTION больше 42.
Что касается nil, я знаю, что Obj-C также использует nil. Мне не хотелось бы думать, что кто-то пошел против очень популярного соглашения (или, по крайней мере, того, что я помню) о NULL, который, как я думал, был где-то в заголовке стандартной библиотеки. Однако я давно не изучал C ++.
просто добавьте в начале
#define null '\0'
или что угодно вместо null
и придерживайтесь того, что вам больше нравится. Концепция null в C ++ просто связана с указателем, не указывающим ни на что ( 0x0
).
Помните, что каждый компилятор может иметь собственное определение null, nil, NULL, что угодно .. но в итоге все равно 0.
Вероятно, в исходном тексте, который вы смотрите, есть
#define nil '\0'
где-то в заголовочном файле ..