当前位置: 技术问答>linux和unix
if else多层嵌套发现中间某一次if else条件判断成立与失败分支同时执行
来源: 互联网 发布时间:2017-05-30
本文导语: 本人应用编程新手,根据开发需呀,需要自己写一个字符串解析函数,解析过程通过多层if-else嵌套来判断数据是否正确,但是 当多层嵌套,调试时出现bug,经gdb调试,发现其中一层的if-else(代码中红色标注),在程...
本人应用编程新手,根据开发需呀,需要自己写一个字符串解析函数,解析过程通过多层if-else嵌套来判断数据是否正确,但是
当多层嵌套,调试时出现bug,经gdb调试,发现其中一层的if-else(代码中红色标注),在程序执行时,if判断条件成功分支执行过以后,其对应的else语句也跟着执行,经过反复查看代码自己没有发现编写错误。故有点怀疑是否是if-else多层嵌套时,是否gcc存在BUG,造成编译错误,使条件分支失效。如果能指出是我代码编写错误引起的更好。
我用的是Ubuntu10.04,gcc版本为gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)
现把代码精简处理如下:
#include
#include
#include
#define HEADER_SYMBOL 0x5a
#define MAX_COMMAND_SIZE 44
//最小帧长度
#define MIN_FRAME_SIZE 20
//最大帧长度
#define MAX_FRAME_SIZE 204
int main(int argc, char *argv[])
{
char buf[44] = {HEADER_SYMBOL,HEADER_SYMBOL,0x7b,HEADER_SYMBOL,HEADER_SYMBOL,0x66};
int n , size;
int command_number = 0;
int max_command_number = 1;
int data_number = 0;
int max_data_number = 1;
char * buf_p = buf;
int ret = 1;
if(ret > 0){
n = sizeof(buf);
printf("sizeof(buf) = %dn", n);
if(n > 0){
while(buf_p - buf MAX_FRAME_SIZE)||(size
当多层嵌套,调试时出现bug,经gdb调试,发现其中一层的if-else(代码中红色标注),在程序执行时,if判断条件成功分支执行过以后,其对应的else语句也跟着执行,经过反复查看代码自己没有发现编写错误。故有点怀疑是否是if-else多层嵌套时,是否gcc存在BUG,造成编译错误,使条件分支失效。如果能指出是我代码编写错误引起的更好。
我用的是Ubuntu10.04,gcc版本为gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)
现把代码精简处理如下:
#include
#include
#include
#define HEADER_SYMBOL 0x5a
#define MAX_COMMAND_SIZE 44
//最小帧长度
#define MIN_FRAME_SIZE 20
//最大帧长度
#define MAX_FRAME_SIZE 204
int main(int argc, char *argv[])
{
char buf[44] = {HEADER_SYMBOL,HEADER_SYMBOL,0x7b,HEADER_SYMBOL,HEADER_SYMBOL,0x66};
int n , size;
int command_number = 0;
int max_command_number = 1;
int data_number = 0;
int max_data_number = 1;
char * buf_p = buf;
int ret = 1;
if(ret > 0){
n = sizeof(buf);
printf("sizeof(buf) = %dn", n);
if(n > 0){
while(buf_p - buf MAX_FRAME_SIZE)||(size
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!