OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3732|回复: 3

关于#ifndef

[复制链接]

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
发表于 2016-9-7 15:36:39 | 显示全部楼层 |阅读模式
1金钱

全局变量   i;
void a_hanshu(void)
{
#ifdef overtime
i++;
if(i>一定值)
#undef overtime
#endif
程序
.
.
.
}


void b_hanshu(void)
{
#ifndef overtime
#define overtime
#endif
程序
.
.
.
}

我的意思是:当使用b函数的时候,定义一个超时标志。a函数是个中断,每中断一次就对超时标志i进行操作,当大于预定的超时i值时,解除定义。这能这么用吗?我编译的时候没报错。。

最佳答案

查看完整内容[请看2#楼]

#ifndef是预处理中条件编译,这样应该不会有作用。为什么不直接把overtime作为flag呢?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

261

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2075
金钱
2075
注册时间
2014-2-20
在线时间
284 小时
发表于 2016-9-7 15:36:40 | 显示全部楼层
#ifndef是预处理中条件编译,这样应该不会有作用。为什么不直接把overtime作为flag呢?
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-9-7 15:55:47 | 显示全部楼层
Da Wen 发表于 2016-9-7 15:54
#ifndef是预处理中条件编译,这样应该不会有作用。为什么不直接把overtime作为flag呢?

好的  知道没作用就OK了,我是想知道能不能这么用。。。谢了
回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
发表于 2016-9-7 16:00:50 | 显示全部楼层
我认为不能这么做。

#ifndef #endif里面的程序是在编译前就决定是否要编译进你的程序里面。

实际程序运行的过程中#,ifnde和#endif已经不存在了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-28 12:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表