#ifdef DEBUG;debug();#endif

发布者:小九分析仪最新更新时间:2015-12-24 来源: eefocus关键字:ifdef  DEBUG  endif 手机看文章 扫描二维码
随时随地手机看文章

在看例程的时候,经常看到主函数开始前会有这样的代码,知道是用作调试的。但对此比较模糊,

int main(void) {

#ifdef DEBUG debug();

#endif

在工程设置里有一些设置会对该工程自动产生一系列的宏,用以控制程序的编译和运行。如果你把代码夹在#ifdef DEBUG 和对应的 #endif 中间,那么这段代码只有在调试(DEBUG)下才会被编译。也就是说,如果你在RELEASE模式下,这些代码根本就不会存在于你的最终代码里头。你可以手动实现DEBUG的定义如: #define DEBUG 这些宏代码本身是面向编译器使用的,不要用来实现你的业务逻辑代码,这样会带来很不好的影响。这类宏定义的一个典型应用就是产生/屏蔽调试信息,看下面的例子  

#include using namespace std;  

#ifdef DEBUG  

inline void msg(){ cout<<"I'm testing"; }  

#else  inline void msg() {}  

#endif

int main()  {  msg(); return 0;  }  

上面的代码在DEBUG 模式下是会输出一句话的,你可以把这种应用放在你希望对程序的执行过程进行跟踪的代码里,为它们加上一些‘痕迹’,方便你进行判断。而在其他模式(RELEASE)下,这个函数只不过是一个空函数,又因为它是inline的,所以它实际上不会为你产生任何代码。这样你就能为自己的代码带来一种非常实用的效果,既能在DEBUG模式下为你提供判断的依据,又能在最终的RELEASE版中方便的抛弃掉它们,而不需要你手动地删除掉那些代码。作为宏指令,如果定义了DEBUG宏那么编译#IF后面到#ENDIF的代码否则不编译DEBUG宏一般是编译器产生,如果编译模式是DEBUG就会产生这个宏,如果是RELEASE就不会。

关键字:ifdef  DEBUG  endif 引用地址:#ifdef DEBUG;debug();#endif

上一篇:keil的软件逻辑分析仪( logic analyzer)使用教程
下一篇:关于ucos中os_tmr.c中的代码分析

推荐阅读最新更新时间:2024-03-16 14:41

第6章 动手操作-DEBUG的使用2(X86汇编教程)
本章将真正开始教你一些汇编指令,也许你早就期待着了.好,首先说汇编指令的格式(看不懂的话不要纠结在这里,继续看,后边会进行讲解!): 指令名 打了尖括号的是每行汇编代码都必须有的,打方括号的是看情况决定有没有的,详解: 标号(这个暂时不用理解,先大概看看,以后讲到了再理解.): 之前说过,汇编代码是在内存中的,所以,每行代码都会在内存中占用一定字节,当然,也就有了个地址.有的时候我们可能会需要用到某行代码的地址,代码将会被放到内存的什么地方,一般在代码编译出来就会计算好.所以在代码中可以直接输入那行代码在内存中的地址.但是呢.假如修改了代码,那内存地址不就变了吗? 所以人们想了这么个办法:用
[单片机]
第6章 动手操作-<font color='red'>DEBUG</font>的使用2(X86汇编教程)
Stm32 debug停留在"BKPT 0xAB"或者"SWI 0xAB"的解决办法
一、、背景:   曾经在工作中接触过STM32一段时间,但没有深入的去学习,只是用前辈搭建好的模型来实现一些功能罢了,俗话说的好,大树底下好乘凉,开发确实轻松了,可是不深究点,又觉着心里不踏实,然而也一直没花时间去深究。刚好,最近需要重新使用STM32,完全自己开发,没想到今天一上来就让我碰上个不小的问题,废话不多说,进入正题。 二、正文:   在使用串口的时候,代码可以正常编译,没有报任何错误,烧录进MCU内,就是看不到程序正常运行的现象,而把串口部分注释掉就没问题。进入调试模式,发现代码停在 BKPT  0xAB 这里,并不是死循环,按下全速运行键“F5”,代码会立马在该段被终止,不会继续往下跑,这里说明了main函数都没
[单片机]
Stm32 <font color='red'>debug</font>停留在
单片机程序中的调试debug及仿真
在没有单片机硬件的情况下,可以采用如下的仿真方式进行查看效果: 1、debug 进行调试,黄色箭头指向了下一条要执行的语句。 2、设置中断,全速执行,单步执行等操作 3、打开仿真窗口,查看I/O口的变化。 4、查看变量的值: 4.1打开view---- WAtch&Call Stack Window 4.2下方出现WAtch&Call Stack Window,显示变量i的当前值; 4.3点击watch#1标签,选中变量i,直接拖动到窗口内,然后点击单步执行,查看变量i的变化。 4.4单步执行后,我们将数值转换成十进制形式,查看最终i的值 4.5结果如下
[单片机]
单片机程序中的调试<font color='red'>debug</font>及仿真
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved