当前位置: 代码迷 >> C语言 >> 曾经遇到的最郁闷的一次程序调试
  详细解决方案

曾经遇到的最郁闷的一次程序调试

热度:372   发布时间:2008-06-14 22:24:58.0
提示: 作者被禁止或删除 内容自动屏蔽
2008-06-14 14:24:58
Loli

来 自:飞燕算法群46520219
等 级:新手上路
帖 子:348
专家分:0
注 册:2008-5-27
  得分:0 
不如你说说到底这怎么回事吧



[color=white]
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽
2008-06-14 14:29:24
Loli

来 自:飞燕算法群46520219
等 级:新手上路
帖 子:348
专家分:0
注 册:2008-5-27
  得分:0 
偶的EP+GCC比较搞。。。不但滤掉还自动帮偶去掉。。。


[color=white]
----------------解决方案--------------------------------------------------------
我刚下了你的附件,看到这个问题。。你发在上面的代码好像没这个问题。。呵呵
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽
2008-06-14 14:39:31
VxWorks

来 自:WindRiver
等 级:论坛游民
威 望:6
帖 子:859
专家分:68
注 册:2007-11-24
  得分:0 
这个错误没那么隐晦吧。
1.你可以单步跟踪一次。如果编译都不能通过,错误提示定位到插入宏的地方,马上就知道要去检查宏定义。
2.如果你有一个好的代码编辑器或阅读器,这个错误非常明显。
程序用fish着色后的效果:
#include <stdio.h>
#define MY_PRINT(i) \
do {\

        printf("%d\n", i);\
} while(0)
int main()
{
    int i=9;
    MY_PRINT(i);
    return 0;
}


正确的代码该有的效果:
#include <stdio.h>
#define MY_PRINT(i) \
do {\
        printf("%d\n", i);\
} while(0)

int main()
{
    int i=9;
    MY_PRINT(i);
    return 0;
}

----------------解决方案--------------------------------------------------------
我看了大半天也没看出哪里有区别来着
可编译就是一个报错,一个通过……
----------------解决方案--------------------------------------------------------
回复 27# VxWorks 的帖子
提示: 作者被禁止或删除 内容自动屏蔽
2008-06-15 02:17:37
VxWorks

来 自:WindRiver
等 级:论坛游民
威 望:6
帖 子:859
专家分:68
注 册:2007-11-24
  得分:0 
Vi也有语法高亮啊,而且加上ctag就是比较强大的代码阅读工具了
维护大的工程怎能没有好的工具,用斧头锤子是敲不出原子弹的。
----------------解决方案--------------------------------------------------------
  相关解决方案