求教能否在允许阶段生成宏?

加盾男爵 2017-05-18 08:23:09
现在有个问题有个变量
bool Dirc;
这个值是由某个函数的参数传递的,差不多是这个样子

void Test(bool fg)
{
//......
Dirc = fg;
//.......
}

然后这个值只有该函数在其他地方被调用时才有值,然后我想能在这个函数里根据这个值来产生不同的宏

void Test(bool fg)
{
//......
Dirc = fg;
//.......
#if Dirc //有没有办法实现
#define HOR
#else
#define VER
#endif
//....
}

但问题是,这个值由于是在运行时才有,所以这个只能产生宏HOR
...全文
90 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2017-05-18
  • 打赏
  • 举报
回复
宏是条件编译阶段就已经确定了, 它不能在运行的时候再区分运行那个分支。 如果在运行的时候来确定使用哪个分支,建议使用全局变量。
jklinux 2017-05-18
  • 打赏
  • 举报
回复
不行的, 宏只能用常量的,不能用变量赋值。 l但宏可以在编译时指定宏的值,如: gcc test.c -Ddirc=0x7788 // 相当于在源码里"#define dirc 0x7788"

69,371

社区成员

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

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