难题,请教高手宏的#/##用法!这个宏应该如何定义呢?

hjleochen 2003-09-29 06:56:23


#include <stdio.h>
#include <stdlib.h>

#define xb(a) ???????????????????

void AS();
void BS();

int main(void)
{
char *a="AS";
void (*p)();
p = xb(a);
p();
}

void AS()
{
printf("As\n");
}



这个xb(a)应该如何定义才能使程序合法呢?并正确调用AS函数呢?谢谢!
...全文
28 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnxiaohai 2003-09-30
  • 打赏
  • 举报
回复
不错


楼主的意思很明确,也很有意思


我再帮你想想~~~~~~~~~~~~~~~~~~~~~~~
hjleochen 2003-09-30
  • 打赏
  • 举报
回复
hehe,谢谢各位的热情回复,其实我的本意是想实现一个根据函数名字符串调用此函数的功能
类似于java中的class.forname
也就是希望将char *a的值当做函数名来调用。

但是我昨天晚上考虑了一下这样似乎是不可行的。因为宏是在预编译中进行转换的,而变量char *a的值是在运行期可设置的。所以不能用这种方法实现动态调用。不知道理解对不对。
fireseed 2003-09-30
  • 打赏
  • 举报
回复
不可以的,楼主把#和##的用法搞翻了,这两个操作符是把标识符转为字符串或进行标识符连接,它们不会把字符串转为标识符
hello_wyq 2003-09-30
  • 打赏
  • 举报
回复
写的什么垃圾程序!
daizh 2003-09-29
  • 打赏
  • 举报
回复
楼上这样做好像违背本意了,作者想利用“宏的#/##用法”来实现。好像不是太好做,期待。。。。。
zhusunme 2003-09-29
  • 打赏
  • 举报
回复
#define xb(a) AS
即可

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧