Вот так:
(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.
У меня только один вопрос -- если я включу оптимизацию компилятора, может ли случиться, что функции не вызовутся?