Лучшее решение - написать функцию.Я не понимаю, зачем вам нужен макрос.
Что касается того, как сделать это с макросом, просто оберните его в {}
:
#define FLUSH_PRINTF(x) { printf(x);fflush(stdout); }
Этоотлично в соответствии с C11 6.8, в результате чего получается составной оператор :
statement:
labeled-statement
compound-statement
expression-statement
selection-statement
Если вы хотите разрешить опасный стиль if
без скобок (плохая идея), например:
if(x)
FLUSH_PRINTF(x);
else
FLUSH_PRINTF(y);
, тогда вы должны использовать трюк do while(0)
, чтобы обернуть макрос:
#define FLUSH_PRINTF(x) do { printf(x);fflush(stdout); } while(0)