预处理的问题.在线等.

sangwich 2005-08-30 09:33:45
程序如下:
#define ALGORITHM CycSisoTpc
#define ALG_NAME(ALG) #ALG

int main()
{
ALGORITHM(R, D, W);// 函数调用

printf("算法名称:%s", ALG_NAME(ALGORITHM));
}
目的是要函数名可以作为字符串输出,产生如下输出结果:
>>
>>CycSisoTpc
>>
可实际运行结果为:
>>
>>ALGORITHM
>>
请问如何才能产生我想要的结果?
...全文
132 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sangwich 2005-08-30
  • 打赏
  • 举报
回复
那我的函数调用怎么办?楼上的不行.
megaboy 2005-08-30
  • 打赏
  • 举报
回复
黑色狂人的方法是错的,楼主还要调用函数啊,ALGORITHM(R, D, W);你这样岂不成了"CycSisoTpc"(R,D,W);啊,调用不到函数。

楼主这个需求没办法达到的,只好直接打印"CycSisoTpc"了。
sangwich 2005-08-30
  • 打赏
  • 举报
回复
我就是不想这么麻烦.这个改一种算法,要改好多的地方.还有其它解决办法吗?请各位高手指教.
hjf1010 2005-08-30
  • 打赏
  • 举报
回复
这样就没有问题了吧:楼主试一下

#define ALGORITHM "CycSisoTpc"
#define ALG_NAME(ALG) ALG

int main()
{
ALGORITHM(R, D, W);// 函数调用

printf("算法名称: %s",ALG_NAME(ALGORITHM));
getchar();
}
megaboy 2005-08-30
  • 打赏
  • 举报
回复
没办法了,只好printf("算法名称:%s", "CycSisoTpc");这样了。
megaboy 2005-08-30
  • 打赏
  • 举报
回复
噢,上面我说错了,没看见是要打印一个字符串出来。等一下。
megaboy 2005-08-30
  • 打赏
  • 举报
回复
你不应该用#这个字符串化指令的,ALG_NAME(ALGORITHM)使用之后结果是“ALGORITHM”,预处理是不替换字符串里面的符号的。解决方法是去掉#就OK了:

#define ALGORITHM CycSisoTpc
#define ALG_NAME(ALG) ALG

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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