Недавно клиент выполнил статический анализ кода моего работодателя C и дал нам результаты. Среди полезных исправлений был запрос на изменение знаменитого макроса do { ... } while(0)
до do { ... } while(0,0)
. Я понимаю, что делает их патч (использование оператора последовательности для return оценивает значение второго "0", поэтому эффект тот же), но неясно, почему они предпочитают второй формы над первой формой.
Есть ли законная причина, почему нужно предпочесть вторую форму макроса, или наш статический анализ наших клиентов является слишком педантичным?