Ответ 1
Замена происходит только для функционально-подобного макроса, если за именем макроса стоит левая скобка. Таким образом, следующие все вызовут функционально-подобный макрос MY_MACRO()
:
MY_MACRO()
MY_MACRO ( )
MY_MACRO
( )
Но это не так:
MY_MACRO SomethingElse
Это зависит от того, как вы используете макрос и для чего он используется для того, важно это или нет. В идеале, ваши макросы будут иметь разные имена; если вы зарезервируете идентификаторы всех верхних регистров для макросов, то не имеет значения, используете ли вы объект-подобный или функционально-подобный макрос с нулевыми параметрами.
Эстетически, обычно (но не всегда) очиститель не имеет функциональных макросов, которые принимают нулевые параметры.