Препроцессор C оправданно боится и избегает сообщества С++. Встроенные функции, константы и шаблоны обычно являются более безопасной и превосходной альтернативой #define
.
Следующий макрос:
#define SUCCEEDED(hr) ((HRESULT)(hr) >= 0)
никоим образом не превосходит безопасный тип:
inline bool succeeded(int hr) { return hr >= 0; }
Но макросы действительно имеют свое место, пожалуйста, перечислите используемые вами макросы, которые вы не можете обойти без препроцессора.
Пожалуйста, поместите каждый вариант использования в отдельный ответ, чтобы его можно было проголосовать, и если вы знаете, как достичь одного из ответов без препроцессора, укажите, как в комментариях этого ответа.