NULL и функции с неуказанным количеством аргументов
От: Slimp  
Дата: 02.10.07 01:31
Оценка:
В стандартных инклудах NULL определен как:
#if defined(__cplusplus)
#define NULL 0
#else
#define NULL ((void *)0)
#endif


Все было бы замечательно, если бы не появились 64 разрядные системы, в которых (void *)0 и 0 имеют различную длинну.
В функциях типа execl, в качестве поcледнего указателя должен быть 0. Соответственно не 0, не NULL там писать нельзя.
В принципе, даже в манах рекомендуют (char *)0 — такая конструкция всегда работает нормально, но мне не нравится

Я понимаю, что можно NULL задефайнить самостоятельно так, как тебе нравится, но вопрос собственно в другом.
С какой тайной целью NULL так определили ? Почему он в С++ равен 0, а в С ((void *)0) ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.