带参数的宏

2019-02-18  本文已影响0人  改个昵称好难

带参数的宏


在某些情况下,使用带参数的宏可以在程序预处理阶段生成内联代码[1],避免由于函数调用带来的额外开销。而作为副作用,最终生成的代码可能会大于使用函数的程序。所以,在使用带参数的宏之前往往需要考虑是否需要。由于带参数的宏的本质还是在程序预处理过程时进行字符串的替换,因此需要注意以下几点:

   #define SQR(a) \
   ((a)*(a))
    #define SQR(a) ((a)*(a))

    b = SQR(m + 2);
    #define SQR(X) ((X)*(X))
    
    int a = 3;
    int b = SQR(a);
    float c = 2.3;
    float d = SQR(c);

  1. 内联函数由编译器确定是否进行内联,且需要进行变量类型检查

  2. 宏定义中的换行连接符号

上一篇 下一篇

猜你喜欢

热点阅读