Рассмотрим эту (ужасную, ужасную, не очень хорошую, очень плохую) структуру кода:
#define foo(x) // commented out debugging code
// Misformatted to not obscure the point
if (a)
foo(a);
bar(a);
Я видел, что препроцессоры двух компиляторов генерируют разные результаты в этом коде:
if (a)
bar(a);
и
if (a)
;
bar(a);
Очевидно, что это плохо для переносимой базы кода.
Мой вопрос: что препроцессор должен делать с этим? Сначала комментарии Elide, или сначала раскройте макросы?