当然了,这次是用了新的IDE或者说编译器,串口重定向什么的都做了,其实都还没有走到物理输出那一步,还在前面字符处理时候就出现问题了,具体如下
打印一个hello却什么都没有输出,实际上调试发现根本就没有走到putch()
printf("hello
");
跟踪调试发现在下面函数的 while (*cfmt) 没有满足条件,直接跳过了,跳到 return nout 了
int vfprintf(FILE *fp, const char *fmt, va_list ap)
{
char *cfmt;
cfmt = (char *)fmt;
nout = 0;
while (*cfmt) {
nout += vfpfcnvrt(fp, &cfmt, ap);
}
return nout;
}
而 cfmt[0] 却是等于'h'的 ,那就能满足执行 nout += vfpfcnvrt(fp, &cfmt, ap);的条件啊
真是奇怪了,
哦忘了说是 PIC那个 MPLAB X IDE +XC8编译器,哎
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
好像和库什么的没有关系,编译器关系很大,
比如 我直接写一句 if (*cfmt==0)return; 他真的就return了,而此时 *cfmt 就是一个字符,根本不是 0 啊
一周热门 更多>