Что ж, если вы должны это сделать (и в некоторых случаях это возможно), вы должны по крайней мере определить макрос как «подобный функции», таким образом:
#define SOME_FUNCTION() someFunction(defaultArgument)
в противном случае вы бы написали код, который выглядел как присвоение константе, когда это был фактически вызов функции; то есть;
x = SOME_FUNCTION ; // hidden function call
но с "подобным функции" макросом вы должны написать:
x = SOME_FUNCTION() ; // shorthand function-call with default argument
Что лучше соответствует синтаксису препроцессора с синтаксисом языка.
Как правило, макросов, подобных функциональным, лучше избегать, но некоторые более коварны, чем другие, это далеко не худший случай. Тем не менее, вы могли бы так же легко написать оболочку функции в C или в C ++, используя аргумент по умолчанию, и это было бы предпочтительнее в большинстве случаев.