功能和功能宏的名称可以相同吗?

Pan*_*ato 3 c macros

功能和功能宏的名称可以相同吗?
这不会导致任何问题吗?

Hay*_*tuk 8

它们可能是一样的.根据您使用名称的方式,它可以被预处理器替换.例如

//silly but just for demonstration.
int addfive(int n)
{
    return n + 5;
}
#define addfive(n) ((n) + 5)

int main(void)
{
    int a;
    a = addfive(2); //macro
    a = (addfive)(2); //function
}
Run Code Online (Sandbox Code Playgroud)

对于前 MS说:http://msdn.microsoft.com/en-us/library/aa272055(v = vs.60).aspx

  • 因为#define在函数定义之前 (2认同)