Согласно cplusplus.com, синтаксис для определения макроса:Препроцессор макросов без замены C++
#define identifier replacement
Однако, я иногда наткнуться на макроопределения, который не содержит замену. Например, в afxwin.h, существует следующее определение препроцессора:
#define afx_msg // intentional placeholder
Мои вопросы:
- Что происходит во время компиляции, когда определение препроцессора, который не имеет замены используется? Это просто игнорируется? Например, делает ли линия
afx_msg void OnAddButton();
void OnAddButton();
? - Какова цель использования препроцессора без замены? Это просто сделать код более понятным?
Когда вы пробовали это, пшеницу вы обнаружили? –
Вы можете просто подумать о '# define' как о простой функции поиска и замены, примененной перед компиляцией. Просто попробуйте выполнить поиск afx_msg и замените их ничем. – Catalin