永发信息网

c语言有没有把一个宏作为函数参数的。

答案:5  悬赏:60  手机版
解决时间 2021-03-19 12:35
  • 提问者网友:呐年旧曙光
  • 2021-03-19 04:21
把宏看做一种变量。#define M(x) x*x,void fun(int a,#define L(x)),调用的时候fun(8,M)
最佳答案
  • 五星知识达人网友:污到你湿
  • 2021-03-19 05:12
宏只是编译前简单替换代码内容,而函数真正产生代码。
宏是编译期的,函数是运行期的;
宏不是实体,而函数是一个可寻址的实体;
宏只是编译期替换,在程序里每遇到S(a,b),就用a*b代替,a和b两个实体并没有由宏实际产生,而函数S会在栈中定义两个对象a和b。
宏没有生存期、作用域之类的概念,而函数就有。
函数在运行过程中会在栈中产生函数调用过程活动记录,而宏则没有。
所以说宏作为函数参数是不可行的
全部回答
  • 1楼网友:鱼芗
  • 2021-03-19 09:09
你想把宏当函数用是不行的。
  • 2楼网友:轮獄道
  • 2021-03-19 08:42
用指向函数的指针就可以了,其实函数名是该函数的启始地址,也可以使用(void*)万能指针。 这样声明void a(void (*fn)());
  • 3楼网友:忘川信使
  • 2021-03-19 07:20
只能当作实参 当不了形参吧
  • 4楼网友:醉吻情书
  • 2021-03-19 05:53
不要把宏想得那么复杂,编译代码分为好几个阶段,其中一个是宏扩展,就是简单的将宏进行字符串替换,将宏的内容插入到使用宏的地方。你那么写是不符合预编译指令的语法的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯