به نظر من فقط در شرایط خاص از ماکرو استفاده کنید در بقیه موارد سعی کنید از تابع inline استفاده کنید چون ماکروهای که به صورت تابعی استفاده می شن یک سری اشکالاتی دارند که در زیر با مثال ذکر می کنیم و در ضمن همه پارامترها بایستی ارزیابی شن که این یعنی افت کارایی برنامه در نقاط حساس.
int res;
int value =1;
res = inline_code(value++);
res = inline_code(f());
cout << value << endl;
value = 1;
res = func_code(value++);
res = func_code(f());
cout << value << endl;
در مواردی هم می تونید از ماکرو به عنوان تابع استفاده کنید به فرض شما تابعی دارید که حافظه های زیادی را در طول اجرا از heap گرفته و در صورت رخ دادن شرایط مختلف مجبور به خروج اضطراری در جاهای مختلف آن تابع میشد در این صورت دیگه نیازی نیست تکه از کد وظیفه آزاد کردن کلیه ها حافظه های اشغال شده را دارد در همه نقاط خروج تکرار کنید در این شرایط می توانید از تابع ماکرو استفاده کنید .