GNU编译器下如何定义可以传入带括号的宏参数?详细看内

amdcwf 2004-12-26 09:38:33
我定义了如下宏:
#define PARAM(Returntype,MethodName,ParameterList)\
ReturnType MethodName##ParameterList;
/////////////////////
我的目的是:
PARAM(int,A_add,(int a,int b))---->int A_add(int a,int b)
这在TC2.0下符合我的意图
但在Dev-C++下却报告:
pasting "(" and "A_add" does not give a valid preproccessing token

意思好像是说,宏参数里头出现"_"与"(" 是无效的.
不知,如何在Dev-C++定义,才能满足我的意图?


...全文
143 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
avalonBBS 2004-12-31
  • 打赏
  • 举报
回复
用可变参吧
amdcwf 2004-12-31
  • 打赏
  • 举报
回复
to avalonBBS( ̄(o o) ̄) :
关键是每个函数的参数都不一样啊
Henry0 2004-12-30
  • 打赏
  • 举报
回复
ReturnType MethodName##ParameterList

加两个##是什么意思?
avalonBBS 2004-12-30
  • 打赏
  • 举报
回复
#define PARAM(ReturnType,MethodName,ParameterListA,ParameterListB) \
ReturnType MethodName ( ParameterListA,ParameterListB )
/**********************/
PARAM(int,A_add,int a,int b);


dev c++ 4.9.9.0过

实在想不出更好的办法~~~~~~~~~~:(
amdcwf 2004-12-30
  • 打赏
  • 举报
回复
不行哦,楼上的
我用的是
Dev-C++IDE的,如何能看到宏替换后的结果?
suyouxin 2004-12-30
  • 打赏
  • 举报
回复
你这样试试


#define PARAM(Returntype,ClassName,MethodName,ParameterList)\
ReturnType ClassName_##MethodName##ParameterList;

PARAM(int, A,add,(int a,int b))
amdcwf 2004-12-29
  • 打赏
  • 举报
回复
难道我的问题就这么难?
amdcwf 2004-12-28
  • 打赏
  • 举报
回复
两天了,都没人回答:(
amdcwf 2004-12-27
  • 打赏
  • 举报
回复
TC2.0 下可以有空格的!
up

herryhuang 2004-12-26
  • 打赏
  • 举报
回复
宏定义的参数中好像不能有空格把。

69,382

社区成员

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

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