赞助连接

赞助连接

阅 读 文 章

搞定一个找了几天的BUG

[来源:网上转载 (http://bbs.chinaunix.net) | 作者:网友(网络转载) | 时间:2008-06-14 | 浏览:人次 ]

示例代 *** 如下,其实看明白了就知道很简单,只是代 *** 多了起来的时候不容易发现

config.h

[Copy to clipboard] [ - ]CODE:#ifndef __CONFIG_H__
#define __CONFIG_H__

#include <stdio.h>
#define USE_LIST

#endif
node.h

[Copy to clipboard] [ - ]CODE:#ifndef __NODE_H__
#define __NODE_H__

struct node
{
#ifdef USE_LIST
        struct node* prev;
        struct node* next;
#endif
        int i;
};

#endif
1.h

[Copy to clipboard] [ - ]CODE:#ifndef __1_H__
#define __1_H__

#include "config.h"
#include "node.h"

void f1()
{
        printf("in f1(), sizeof(struct node) = %d\n", sizeof(struct node));
}

#endif
2.h

[Copy to clipboard] [ - ]CODE:#ifndef __2_H__
#define __2_H__

#include "node.h"
#include "config.h"

void f2()
{
        printf("in f2(), sizeof(struct node) = %d\n", sizeof(struct node));
}

#endif
test.cpp 可以注释或者不注释最开始的宏分别调用1.h和2.h中的两个函数打印出node的大小

[Copy to clipboard] [ - ]CODE:#define USE_1

#ifdef USE_1
#include "1.h"
#else
#include "2.h"
#endif

int main()
{
#ifdef USE_1
        f1();
#else
        f2();
#endif

        return 0;
}
由于1.h和2.h对node结构体的大小计算不一致,造成了问题,找了几天终于找到了问题所在.

以后再遇到这样的问题,我的做法是把这些预定义的宏集中放在一个文件中,并且放在每个需要该头文件的文件中包含头文件的最开始位置.


恭喜一把。
上周偶也是这样,整了好几天,总算把BUG解决了。心里轻松了。

要是一直搞不定的BUG怎么办呢?




我的经验,没有任何头绪的时候,就尽量多的打印调试语句,逐渐的接近问题....同时,不要气馁.




QUOTE:原帖由 converse 于 2008-6-13 18:11 发表
我的经验,没有任何头绪的时候,就尽量多的打印调试语句,逐渐的接近问题....同时,不要气馁.
是啊。这个在单个程序运行时候还好一点。有的时间是几个程序都有关联的,执行起来加调试语句就要调整的地方多了。


学习




QUOTE:原帖由 Godbach 于 2008-6-13 18:14 发表


是啊。这个在单个程序运行时候还好一点。有的时间是几个程序都有关联的,执行起来加调试语句就要调整的地方多了。
TAG标签 : 一个 搞定 node #endif 文件 #include struct 放在 to

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表
网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.