debug宏起作用应用
在linux内核中重新定义了printk,如pr_debug,dev_dbg等。要使用这些宏函数就需要定义DEBUG。
那么DEBUG该定义在什么地方呢?
定义到pr_debug或dev_dbg头文件中,则内核所有的宏都起作用。则打印信息太多,不易调试。
理想的宏定义 应该是想打印信息的模块或文件中,那应放到什么位置呢?
最好放到使用文件的最开头
测试用例:
//#define DEBUG static inline int poww(int v)
{
#ifdef DEBUG
return v*v;
#else
return v;
#endif
}
#include <stdio.h> #define DEBUG #include "macro.h" //#define DEBUG int main()
{
int test = ; test = poww(); printf("macro value is %d\n", test); return ;
}
注:上述不同位置定义DEBUG,输出结果不同。
要使DEBUG宏起作用,应将DEBUG定义到宏函数头文件的前面,最不易出错的位置为文件开头。
宏在程序编译的预处理阶段,直接在代码处展开,且按宏定义处当时值带入文件中,所以在宏定义头文件的前和后定义DEBUG结果完全不一样。
debug宏起作用应用的更多相关文章
- iOS中忽略NSLog打印信息(通过PCH文件中定义DEBUG宏解决)
iOS中忽略NSLog打印信息 解决办法: 1.新建PrefixHeader_pch文件,在该文件中定义一下宏 //通过DEBUG宏的定义来解决Debug状态下和Release状态下的输出 #ifde ...
- C语言,调试必备的DEBUG宏定义
1. #include <stdio.h> #include <stdarg.h> //仅仅是打印函数名字替换 DEBUG <--> printf #define ...
- DEBUG宏
4.8.6.运算中的临时匿名变量4.8.6.1.C语言和汇编的区别(汇编完全对应机器操作,C对应逻辑操作)(1)C语言叫高级语言,汇编语言叫低级语言.(2)低级语言的意思是汇编语言和机器操作相对应,汇 ...
- Directx11教程(11) 增加一个debug宏
原文:Directx11教程(11) 增加一个debug宏 现在我们在common.h中增加一个debug的宏,在每个d3d11函数后调用,如果d3d函数出错,它能够给出程序中错误的代码行 ...
- C语言中宏的作用
在C语言#define机制中包括了一个规定,与允许把参数替换到文本中,这种实现通常称为宏或宏定义.下面是宏的声明方式: #define name(parameter-list) ...
- C语言:类似linux内核的分等级DEBUG宏(打印宏)
总结几种log打印printf函数的宏定义 http://blog.chinaunix.net/uid-20564848-id-73402.html #include <stdio.h> ...
- Xcode DEBUG宏定义,debug和release模式的选择
设置DEBUG, 使用宏定义: #if DEBUG NSLog(@"debug model"); #else //执行release模式的代码 #endif
- c++/c DEBUG宏
#cat log_debug.h #ifdef DEBUG int log_debug(const char *format, ...); #else int log_debug(const char ...
- __init和__exit宏的作用
原文地址:http://blog.csdn.net/zhenwenxian/article/details/8564574 内核的部分函数带有__init和__exit宏,负责“初始化”和“清理收尾” ...
随机推荐
- Cognos开发ContentManagerServiceStub不能转换为Stub
Cognos SDK开发过程中遇到的小错误详细请看下图 另:附加了详细的错误信息 Exception in thread "main" java.lang.ClassCastExc ...
- Yii学习笔记之二(使用gii生成一个简单的样例)
1. 数据库准备 (1) 首先我们建一数据库 yii2test 并建立一张表例如以下: DROP TABLE IF EXISTS `posts`; CREATE TABLE `posts` ( `po ...
- nDCG学习笔记
参考:http://en.wikipedia.org/wiki/Discounted_cumulative_gain Normalized Discounted Cumulative Gain:一种对 ...
- ERROR security.UserGroupInformation: Priviledge...
http://my.oschina.net/u/617085/blog/71740 "Failed to set permissions of path"问题 参考文献:https ...
- unity3d 自带截屏
Application.CaptureScreenshot("Screenshot.png"); 截屏后的文件所在路径:Application.persistentDataPath
- excel 永久保存宏命令
excel 永久保存宏命令 CreateTime--2018年5月31日10:03:44 Author:Marydon 情形一:下次编辑excel时,仍可使用 Ctrl+s-->选择否,选择 ...
- 19-spring学习-springMVC环境配置
新建一共环境,添加spring支持,就可以开发springMVC了. 既然是springMVC,就必须为其定义相关配置. 1,springMVC所有配置都需要在applicationContext.x ...
- ubuntu开启ftp服务
首先再防火墙中开启21和20端口 iptables -A INPUT -p tcp --dport -j ACCEPT iptables -A INPUT -p tcp --dport -j ACCE ...
- 关于RHEL6下桥网配置的写法(ifcfg-eth0,ifcfg-br0) / 在阿里云的CentOS上安装docker
Posted on 2011-07-28 16:46 zhousir1991 阅读(1978) 评论(0) 编辑 收藏 以下仅仅是我在做练习的时候下的环境,参照写即可: [root@desktop2 ...
- 主从复制时报:ERROR 1794 (HY000): Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in t
centos 6.5 mysql5.7 在从库作stop slave时报: error:ERROR 1794 (HY000): Slave is not configured or failed to ...