URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6089
[ Назад ]

Исходное сообщение
"if (NULL)"

Отправлено AngelSky , 17-Янв-07 10:20 
здравствуйте!

как компилятор отреагирует на выражение

if (NULL)

?


Содержание

Сообщения в этом обсуждении
"if (NULL)"
Отправлено Forth , 17-Янв-07 10:29 
>здравствуйте!
>
>как компилятор отреагирует на выражение
>
>if (NULL)
Скомпилирует нечто вроде(на x86):
cmp eax, 0
jnz __L54738
А если gcc с опцией -O2 то может вообще ничего не скомпилирует.


"if (NULL)"
Отправлено AngelSky , 17-Янв-07 10:49 
>>здравствуйте!
>>
>>как компилятор отреагирует на выражение
>>
>>if (NULL)
>Скомпилирует нечто вроде(на x86):
>cmp eax, 0
>jnz __L54738
>А если gcc с опцией -O2 то может вообще ничего не скомпилирует.
>


У меня компилятор ругается:
warning: converting to non-pointer type 'bool' from NULL

может это от системы зависит? или пакетов каких не хватает?


"if (NULL)"
Отправлено Forth , 17-Янв-07 11:10 
>У меня компилятор ругается:
>warning: converting to non-pointer type 'bool' from NULL
>
>может это от системы зависит? или пакетов каких не хватает?
Ага, от системы по-любому, нужен линукс 2.6.7, и не хватает libsmclient-3.
Нет конечно, NULL это тип указатель, да он на многих системах 0, а где-то может кстати и не 0 вовсе. Предупреждение компилятора, что не тот тип.
И вообще это шутка такая про if(NULL)? Смысл такого условия? Вроде не первое апреля.


"if (NULL)"
Отправлено AngelSky , 17-Янв-07 11:22 
>>У меня компилятор ругается:
>>warning: converting to non-pointer type 'bool' from NULL
>>
>>может это от системы зависит? или пакетов каких не хватает?
>Ага, от системы по-любому, нужен линукс 2.6.7, и не хватает libsmclient-3.
>Нет конечно, NULL это тип указатель, да он на многих системах 0,
>а где-то может кстати и не 0 вовсе. Предупреждение компилятора, что
>не тот тип.
>И вообще это шутка такая про if(NULL)? Смысл такого условия? Вроде не
>первое апреля.

У меня FC5 , хочу поставить себе netams для замера траффика, и нифига он у меня не компилится!

define SHOW_OIDS(file, flag, name, id) { \
        if(flag&CFG_SHOW_OIDS) fprintf(file, "%06X ", id); \
        else SHOW_STR(file, NULL, name); \
}

#define SHOW_STR(file, prefix, str) { \
        if (prefix) fprintf(file, "%s ", prefix); \
        if (str && strchr(str, ' ')) \
                fprintf(file, "\"%s\" ", str?str:""); \
        else fprintf(file, "%s ", str?str:""); \
}

а в данном случае по сути так и получается if (NULL),
if (prifix) а prifix передан как NULL


"if (NULL)"
Отправлено Forth , 17-Янв-07 11:29 
>>>У меня компилятор ругается:
>>>warning: converting to non-pointer type 'bool' from NULL
>а в данном случае по сути так и получается if (NULL),
>if (prifix) а prifix передан как NULL
warning, а не error. Сомневаюсь, что не собирается из-за этого.


"if (NULL)"
Отправлено AngelSky , 17-Янв-07 12:15 
>>>>У меня компилятор ругается:
>>>>warning: converting to non-pointer type 'bool' from NULL
>>а в данном случае по сути так и получается if (NULL),
>>if (prifix) а prifix передан как NULL
>warning, а не error. Сомневаюсь, что не собирается из-за этого.


аа! ясно, значит собирается! это хорошо:))
спасибо!