Странное поведение препроцессора

Рассмотрим следующий код:

class Type
{
  public:
    void Method(){};
};

#define Method ...

int main()
{
    Type type;
    type.Method();
    return 0;
}

Является ли нормальной ситуация, при которой препроцессор заменяет Method в type.Method() содержимым макроопределения Method?


Ответы (1 шт):

Автор решения: Harry

В данном случае Method - отдельное слово, так что все нормально.

Вот если бы он заменял часть из MyMethod - тогда да, это было бы неверно.

Препроцессор ничего не знает о синтаксисе языка.

→ Ссылка