![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| S.A.P. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 9 Всего: 71 |
А вот то, что 0 применительно к указателям конвертируется в NULL, пожалуй, соглашусь, но все равно лучше все таки юзать NULL для указателей. Так спокойней, да и мало ли какая реализация C++ попадется |
|||
|
||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
В приведённой тобой ссылке как раз и говорится, что макрос NULL, определённый в заголовках <clocale>, <cstddef>, <cstdio>, <cstdlib>, <cstring>, <ctime> или <cwchar> - это зависящая от реализации константа для нулевого указателя. Обрати внимание, что все эти заголовки из CRT. Если есть под рукой стандарт, посмотри, что там говорится про null-pointer, а не про макрос NULL.
0 не конвертируется в NULL, он интерпретируется компилятором как нулевой указатель, точно так же, как интерпретируется как нулевой указатель конкретное значение макроса NULL. Проблема в том, что 0 - везде 0, а макрос NULL может отличаться в разных реализациях. Так что я с тобой не соглашусь, лучше всё-таки использовать просто 0. -------------------- Не смей читать мою подпись!!! |
|||
|
||||
| Adil' |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 26.8.2004 Где: Питер Репутация: 6 Всего: 15 |
-------------------- Удачи |
||||
|
|||||
| srd |
|
||||||||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
Боюсь вы меня не понимаете. В стандарте явно сказано, что 0, когда он применяется к указателям, всегда интерпретируется как нулевой указатель, не зависимо от того, чем нулевой указатель является в данной реализации и на данной машине в действительности, хоть 0xaabbccdd. А вот если вы напишете
то фиг вы это скомпилируете компилятором, где, например, NULL определён как
Кажется в документации wxWidgets приводился пример такого загадочного определения макроса NULL и вытекающие отсюда проблемы. Ещё раз, NULL достался в наследство от Си, а компилятор Си более равнодушно относится к присваиваниям указателей разных типов, потому там подобная проблема и не стояла. Добавлено @ 12:20 Кстати, Страуструп в своём FAQ говорит, что в Си++ макрос NULL - всегда 0.
Смотрим http://www.research.att.com/~bs/bs_faq2.html#null -------------------- Не смей читать мою подпись!!! |
||||||||
|
|||||||||
| Adil' |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 26.8.2004 Где: Питер Репутация: 6 Всего: 15 |
Добавлено @ 12:31
-------------------- Удачи |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |