Макросы не являются функциями.На самом деле, они даже не работают , как функции.В частности, они на самом деле не «делают» переменные аргументы.
То есть: когда вы вставляете это в какую-то другую функцию или метод, макрос раскрывается и вставляется текстуально .Если эта функция не имеет список переменных аргументов, начинающийся после того, что вы передали как obj
, это просто не сработает.
(Существуют способы заставить макросы «делать» переменные аргументы, но это почти навернякаужасная идея, и почти наверняка нет необходимости.)