Отладка макросов может занять много времени. Нам намного лучше избегая их, за исключением очень редких случаев, когда ни константы, функции или шаблоны могут делать то, что мы хотим.
Какие редкие случаи?
Отладка будет намного проще, так как ваш проект будет разделен на различные модули для каждой задачи. Макросы могут быть очень полезны, когда у вас большой и сложный программный проект. Но есть некоторые подводные камни, о которых говорится здесь .
Для меня удобнее использовать макросы для констант и для частей кода, которые не имеют отдельной логической функциональности.Но есть некоторые важные различия между (встроенными) функциями и (подобными функции) макросами, вот они: http://msdn.microsoft.com/en-us/library/bf6bf4cf.aspx