On Tue, 26 Sep 2000, Alexander Kotelnikov wrote: > On Tue, Sep 26, 2000 at 09:49:24AM +0500, Vlad Harchev wrote: > > > Я хочу, чтобы в моей C++ программе NULL'ом был не (void*)0 и не __null, > > > а просто int 0, как оно и дожно быть в плюсах, насколько я понимаю. > > > > Никак оно не должно быть. NULL - просто широко используемый макрос с типом > > указатель на void и значением 0. Можно вместо NULL писать ((void*)0) если > > так > > удобнее. > > Это в C. В C++ NULL'а кажется нет, а Страуструп пишет, что есди уж очень > надо, то сделайте так: > > > const int NULL=0;
Так делать глупо с точки зрения производительности - компилятор не будет знать значение константы NULL при компиляции - будет выдавать код для загрузки этой константы из памяти вместо прямой инструкции на сравнение с нулем. > > Для чего? Чтобы нулевые указатели при выводе в поток как строки говили 0 а > > не > > "(null)" ? Таким образом не получится. > > получится. Если только выводить NULL в поток напрямую, без кастинга, как например: cout << NULL; У меня в коде лично такое ни разу не встречалось :) А вот cout << (char*)NULL; по прежнему будет писать "(null)". > > Короче, я не вижу никакой пользы от такой подмены (но работать будет, может > > преджупрежедений будет больше). > > использование NULL в арифметических выражениях в качестве 0 в win32 очень > распространено :(, а я модифицирую код работающий там. Да? Ни разу не видел и сам не юзал. Что-то очень странный код ты хакаешь :) > -- > Alexander Kotelnikov > Saint-Petersburg, Russia > Best regards, -Vlad