Странное поведение препроцессора
Рассмотрим следующий код:
class Type
{
public:
void Method(){};
};
#define Method ...
int main()
{
Type type;
type.Method();
return 0;
}
Является ли нормальной ситуация, при которой препроцессор заменяет Method в type.Method() содержимым макроопределения Method?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
В данном случае Method - отдельное слово, так что все нормально.
Вот если бы он заменял часть из MyMethod - тогда да, это было бы неверно.
Препроцессор ничего не знает о синтаксисе языка.