zHz00 Untitled

пятница, 29 марта 2013
22:50 void (не himself)
Случайно обнаружил, что в Си/Си++ можно приводить к типу... void. То есть, к отсутствующему значению.
Вот так:
(void)любое выражение

И всё, значение типа void. Как можно это применять?

Это значение, конечно же, можно возвращать из функции. Какого типа должна быть функция? void, разумеется!

void f()
{
return (void)MessageBox(NULL,"I\'m part of void expression", "HELLO",0);
}


Так можно избегать лишних фигурных скобок, если надо сделать какое либо действие, возвращающее не void и завершить функцию. Например:
if(some&&condition)
return (void)(DoAction1(),DoAction2());


Сначала будут выполнены функции, необходимые для получения значения выражения через операцию "запятая", а потом преобразовано к типу void и возвращено.

Спустя два дня с удивлением увидел такую же штуку (преобразование к void) в исходниках MFC.

У меня только один вопрос -- если я включу оптимизацию компилятора, может ли случиться, что функции не вызовутся?

@темы: Программирование

URL
на ладошках остались мазоли от весел они так забавно и пр...
Ши: Есть один(?) вопрос. Вот почему, объясните мне кто-ни...
Люди уделяйте внимание своим близким людям. Обидно оче...
Близится сессия! 70 рисунков сделаны, даже больше. Жаль, ...
Португалия янкам проиграла, так ведь еще всю игру проигры...
Ши: Забавно, считается, что "автор" дневника - ...
Добавить комментарий

Расширенная форма

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail