Цель использования паренов в макросе - контролировать приоритет при раскрытии макроса.Подумайте:
#define X( a, b ) a * b
если макрос используется следующим образом
X( 1 + 2, 3 )
, нам, вероятно, хотелось бы, чтобы ответ был 9, но при расширении мы получаем:
1 + 2 * 3
давая нам 7. Чтобы избежать такого рода вещей, мы должны были написать макрос следующим образом:
#define X( a, b ) ((a) * (b))
Если приоритет не является проблемой, скобки любого типа не являются абсолютно необходимыми, хотя фигурные скобки могутв зависимости от семантики макросов - например, если вы хотите создать локальную переменную,