Подстановки макросов расширены следующим образом:
y = RECIPROCAL_1(x+10.0)
становится
y = 1/(x+10.0);
и
y = RECIPROCAL_2(x+10.0)
становится
y = 1/x+10.0;
Поскольку /
имеет более высокий приоритет, чем +
, значения для y
отличаются.
Это отличный пример того, почему проницательный программист достигает макросов только тогда, когда ни одно другое решение не является жизнеспособным. И даже в этом случае те проницательные программисты, которые считают необходимым использовать макросы, всегда будут использовать достаточные скобки, чтобы избежать таких ловушек.