怎样漂亮的实现与#ifndef...#endif功能

难题 2014-12-09 03:46:37
举个例子
int ccc(int a)
{
#ifndef aaa
a++;
#endif
return a;
}

void bbb()
{
#define aaa
}

int main()
{
int a = 0;
bbb();
a = ccc(a);
printf("%d",a);
return 0;
}


这样写肯定是有问题的,就是想知道在外部不确定是否会调用bbb的情况下实现条件执行,现在想到的办法就是全局变量和if,有没有漂亮的实现条件执行?
...全文
259 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
难题 2014-12-11
  • 打赏
  • 举报
回复
好吧,我只能用IF了
「已注销」 2014-12-10
  • 打赏
  • 举报
回复
引用 8 楼 u013823973 的回复:
[quote=引用 7 楼 bravery36 的回复:] 预编译和运行时完全就是两个概念,lz先看下基础的东西。
我都已经说明我已经知道预编译和运行时的区别了,我就是想知道在运行时执行分支不用全局变量和IF[/quote] 既然你都反复解释你知道编译时和运行时的区别,那你也应该知道你问这种问题是不可能的。
难题 2014-12-10
  • 打赏
  • 举报
回复
引用 7 楼 bravery36 的回复:
预编译和运行时完全就是两个概念,lz先看下基础的东西。
我都已经说明我已经知道预编译和运行时的区别了,我就是想知道在运行时执行分支不用全局变量和IF
非著名码农 2014-12-10
  • 打赏
  • 举报
回复
漂亮有什么用,好用才是王道
幻夢之葉 2014-12-10
  • 打赏
  • 举报
回复
if怎么就不漂亮了? 代码的优雅是个人能力问题,与if何关?!
bravery36 2014-12-09
  • 打赏
  • 举报
回复
预编译和运行时完全就是两个概念,lz先看下基础的东西。
难题 2014-12-09
  • 打赏
  • 举报
回复
我接手的程序里面 在很多地方使用了#ifndef 的条件编译,现在改为由从外部读取数据来进行条件执行,就是看看有什么好的方法来替代#ifndef
难题 2014-12-09
  • 打赏
  • 举报
回复
引用 2 楼 fly_dragon_fly 的回复:
不可能通过ifdef 来实现条件执行, 要跨越编译和执行边界很麻烦,还是考虑其它方式实现吧, 如果功底够,可以参考一下boost::mpl中的for_each
为指导不能用#ifndef来实现条件执行,难道就只能用全局和if?
难题 2014-12-09
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
先弄明白啥叫编译期、啥叫运行期。
为知道你所的什么,不然我怎么会说 这样写肯定有问题啊, 为就是想知道有没有在运行期的是实话有类似#ifndef的条件分支
勤奋的小游侠 2014-12-09
  • 打赏
  • 举报
回复
#ifndef 这些宏在预编译时就会全部被展开。 你说的运行期的功能和它们实现不了的。
fly_dragon_fly 2014-12-09
  • 打赏
  • 举报
回复
不可能通过ifdef 来实现条件执行, 要跨越编译和执行边界很麻烦,还是考虑其它方式实现吧, 如果功底够,可以参考一下boost::mpl中的for_each
赵4老师 2014-12-09
  • 打赏
  • 举报
回复
先弄明白啥叫编译期、啥叫运行期。

65,186

社区成员

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

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