Говоря о области видимости, я думаю, что вы все еще можете сделать это:
if (condition)
{
int temporary = expression();
trigger_side_effect(temporary);
}
Другими словами, каждая действительная область в скобках может содержать новые объявления переменных, даже в C89.Многие люди кажутся удивленными этим;с этой точки зрения нет никакой разницы между областью верхнего уровня функции и любой другой областью, содержащейся в ней.Переменные будут видны во всех областях, начиная с той, которая их объявила.
Обратите внимание, что я не знаю, поддерживается ли это руководством по стилю GNOME, но, по крайней мере, поддерживается C89 и рекомендуемой техникой(мной), чтобы все было как можно более локально.