c语言中的dbg函数,语c db

C语言#if DBG 这个宏是什么意思?

微软定义和自定义,没有本质区别。关键看哪个代码块在用它。

在遂宁等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站建设、成都网站设计 网站设计制作按需定制开发,公司网站建设,企业网站建设,品牌网站制作,成都营销网站建设,成都外贸网站建设公司,遂宁网站建设费用合理。

这个一般是DEBUG选项,

比如:

#if DBG

funcA();

#endif

如果定义了DBG这个宏,那就会编译funcA(),否则,funcA()不会被编译。

C语言中printf是库函数,那么printf的代码到底在哪里呢?

书上说的没错,lib文件中存放的就是被调用系统函数的目标代码,但是和声明文件一样不是一个函数一个文件,而是一批函数放在一个文件里。并且文件是二进制的格式,你也查看不了。

对于.h头文件你理解的没错,头文件是只是函数的声明,里面不放函数的具体代码,具体代码比如VC是在C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src 目录下,你可以找到printf.c文件的源码,如果你是想看源码就看这个。我看了其它人的回复,C编译器的不同位置放的是不同的函数部分,以VC为例,include放的是调用函数的声明部分,并且只有声明部分;src目录放的是函数的源码;lib放的是函数的编译后目标文件,但是是打捆放的,代码只有在链接时,才会将库函数进行连接,并生成最后的EXE可执行文件。

#define dbg_msg(...) do {printf("### [%s:%d] ", __FUNCTION__, __LINE__); printf(__VA_ARGS__);}

建议你看看C语言相关的预处理命令部分

对于这 #define 是宏定义命令,分为无参数宏定义 和 有参数宏定义,你这个属于有参数的宏定义;

对于有参数的宏定义,参数部分 应该为 要替换为的部分的变量;

你这里 #define dbg_msg(...) 参数部分 是 ... 没有这种用法

例如:

#includestdio.h

#define dbg_msg(__FUNCTION__,__LINE__,__VA_ARGS__) {printf("### [%s:%d] ", __FUNCTION__, __LINE__); printf(__VA_ARGS__);}

void main()

{

char a[] = "123";

int b = 5;

char c[]="456";

dbg_msg(a,b,c); //宏定义要替换的部分,在编译前预处理器就会将这个地方替换为 目标字符串,之后才进行编译

}


标题名称:c语言中的dbg函数,语c db
文章转载:http://csdahua.cn/article/hogsoe.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流