On Tue, 26 Sep 2000, Nikolay Ilduganov wrote: > Влад, согласен я с жабой спутал. > Но в (void*)0 между С и С++ есть большая разница. > В стандарте C++ написано, что NULL может быть как 0 так и 0L, но ни в коем > случае не ((void*)0) иначе обещаются косяки при приведении (void*) к > (class*).
Вообще да, может быть. У меня ни разу не возникала потребность переназначить NULL. Хотя если честно, мне не очевидно, что могут быть какие-то проблемы при использовании в качестве NULL ((void*)0) (да, я прочитал стандарт на С++ от корки до корки - и не могу представить каких-нить проблем с ((void*)0) ). > > On Tue, 26 Sep 2000, Vlad Harchev wrote: > > > On Tue, 26 Sep 2000, Alexander Kotelnikov wrote: > > > > Hi, > > > > > Hi. > > > > > > Я хочу, чтобы в моей C++ программе NULL'ом был не (void*)0 и не __null, > > > а просто int 0, как оно и дожно быть в плюсах, насколько я понимаю. > > > > Никак оно не должно быть. NULL - просто широко используемый макрос с типом > > указатель на void и значением 0. Можно вместо NULL писать ((void*)0) если > > так > > удобнее. > > > > > Безопасно ли сделать что-нибудь типа > > > # ifdef NULL > > > # undef NULL > > > # endif > > > # define NULL (0) > > > > > > или > > > const int NULL=0; > > > > Для чего? Чтобы нулевые указатели при выводе в поток как строки говили 0 а > > не > > "(null)" ? Таким образом не получится. > > > > Короче, я не вижу никакой пользы от такой подмены (но работать будет, может > > преджупрежедений будет больше). > > > > > и потом вызывать C функции? > > > > > > Спасибо, Best regards, -Vlad