C语言如何定义一个宏,可以有参数或无参数的调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言如何定义一个宏,可以有参数或无参数的调用相关的知识,希望对你有一定的参考价值。

参考技术A #include <stdio.h>

#define PRINTF_120 printf("120\\n");            //无参数宏定义
#define PRINTF_INT(a) printf("%d\\n", a);       //有参数宏定义

int main (int argc, char *argv[])

    PRINTF_120
    PRINTF_INT(110)
  
    return 0;

c语言宏定义有无参数的区别

你是指带参的和不带参数的?

不管带不带参数,一定要记住一点,“原样替换”是宏定义的本质。
在处理之前做了文本替换的工作。

如果说区别的话, 带参数的需要将对应的文本导入到宏定义的定义中去然后再替换,比不带参数多了一步
#define M(y) y*y+3*y /*宏定义*/
k=M(5); /*宏调用*/
那么在编译之前就会变成
k= 5*5 + 3*5

#define M(y) y*y+3*y /*宏定义*/
k=M(3+x); /*宏调用*/
那么在编译之前就会变成
k=3+x*3+x+3*3+x (注意这里原样替换,不能加括号的)
参考技术A 有参数的话 就先于给了常量 不能修改,而没有参数 可以在程序里重新赋值。例如#define N 18 N一直都是18 你在程序里改 N=10;并不能改变值。 参考技术B

以上是关于C语言如何定义一个宏,可以有参数或无参数的调用的主要内容,如果未能解决你的问题,请参考以下文章

c语言宏定义有无参数的区别

C语——宏小结

C语言宏定义实现可变参数

C语言中的宏定义怎么用?

C语言宏定义宏替换

C语言带参数的宏定义:定义宏名时可以不写出参数???