您的位置:首页 > 其它

今天发现一个bug,不知道是什么问题,printf的问题吗,还是什么。先记下!

2014-01-14 09:31 411 查看
1 /* Note:Your choice is C IDE */
2 #include <stdio.h>
3 #include <string.h>
4 #include <stdlib.h>
5 #include <dos.h>
6
7  //typedef unsigned int    U32;
8  typedef unsigned long    U32;
9 typedef unsigned short    U16;
10 typedef    unsigned char    U8;
11
12 typedef struct can_cinit{
13          //add by cx
14           enum         IRQV         IRQ_num;
15          U8            channel;
16          U32        chip_add;
17     }CAN_INIT;
18
19 CAN_INIT *        Init_add        (U32 base_addr)
20 {
21     CAN_INIT *p_CanDev;
22     p_CanDev = (CAN_INIT *)malloc(sizeof(CAN_INIT));
23     memset(p_CanDev,0,sizeof(CAN_INIT));
24     p_CanDev->chip_add = base_addr;
25     printf("@ p_CanDev=%lx\n",p_CanDev);
26     return p_CanDev;
27 }


1 void main(void)
2 {
3     CAN_INIT *pCan1Dev;
4     CAN_INIT *p_CanDev;
5
6     pCan1Dev=Init_add(0x1000);
7     printf("chip:%lx\n",pCan1Dev);
8     printf("chip add:%lx\n",pCan1Dev->chip_add);
9     printf("chip:%lx--chip add:%lx\n",pCan1Dev,pCan1Dev->chip_add);
10
11     getchar();
12
13 }




在win32控制台下运行



是在搞不懂啊,为啥分开打印就OK,但是第三个printf就不行啊!,(注意是在DOS下运行,在win32控制台运行时没问题的,只要包含dos.h在用c/c++程序设计学习实验系统)编译后就自动跑到dos下去执行了,编译也是采用TC来编译的,我怀疑还是与编译器有关系,但是TC2.0,TC3.0和BC31都不行,运行结果如下
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐