Я наткнулся на загадочную запись:
if(ptr != (void)(NULL)) {
//some action
}
Таким образом, он расширился до
if(ptr != (void)((void *)0)) {
//some action
}
что выглядит как минимум странно. Есть ли в этом какое-то обоснование или это просто бессмысленно или даже неправильно? Однако он скомпилировался нормально (на linux/gcc, версию не помню).
-ИЗМЕНИТЬ-
Я проверил этот код сегодня, и вот новая информация: во-первых, приведение использовалось в макросе, и оно расширилось до
return (void)((void*)0);
внутри функции, возвращающей void. Код компилируется с использованием gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-50). Итак, эквивалентно ли это утверждение
return void;
что эквивалентно
return;
или есть что-то еще к этому?
void *
? - person templatetypedef   schedule 03.03.2012gcc
. - person templatetypedef   schedule 03.03.2012void*
, возможно, это могло быть что-то очень похожее наvoid
? Можетvοіd
? - person Mr Lister   schedule 03.03.2012void
. Это правильно? - person Michael Burr   schedule 07.03.2012