Итак, вы хотите сделать запись (или что-то еще) с информацией о файлах и строках, и вы бы предпочли не использовать макросы, верно?
В конце концов, это просто не можетбыть сделано в C ++.Независимо от того, какой механизм вы выбрали - будь то встроенные функции, шаблоны, параметры по умолчанию или что-то еще - если вы не используете макрос, вы просто получите имя файла и номер белья функции регистрации, а неточка вызова.
Использовать макросы.Это единственное место, где они действительно не подлежат замене.
РЕДАКТИРОВАТЬ:
Даже в C ++ FAQ говорится, что макросы иногда являются меньшим из двух зол.1012 * EDIT2:
Как сказал Натон в комментариях ниже, в тех случаях, когда вы используете макросы, лучше об этом прямо заявить.Дайте вашим макросам имена макросов, например COMMIT()
вместо Commit()
.Это прояснит сопровождающим и отладчикам, что происходит вызов макроса, и это должно помочь в большинстве случаев избежать коллизий.Обе хорошие вещи.