printf重定向老是报错,咋整呢?

2019-07-21 00:38发布

环境:KEIL4.7 + C++
使用了正点原子的源代码,如下:
#if 1
#pragma import(__use_no_semihosting)             
              
struct __FILE
{
    int handle;

};

FILE __stdout;       
 
_sys_exit(int x)
{
    x = x;
}

int fputc(int ch, FILE *f)
{      
    while((USART1->SR&0X40)==0); 
    USART1->DR = (u8) ch;      
    return ch;
}
#endif

微库没有打开,包含文件#include <stdio.h>。但是会报错:
FILE __stdout;
此处报错:Srcsp.cpp(891): error:  #70: incomplete type is not allowed

_sys_exit(int x)
此处报错:Srcsp.cpp(893): error:  #260-D: explicit type is missing ("int" assumed)

int fputc(int ch, FILE *f)
此处报错:Srcsp.cpp(898): error:  #734: function "fputc(int, std::FILE *)" conflicts with using-declaration of function "std::fputc(int, std::FILE *) C"

采用微库方式,也会报错。
搞不懂啥原因,求指点,谢谢。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
23条回答
ARM学员
1楼-- · 2019-07-21 05:49
 精彩回答 2  元偷偷看……
FantaSy_
2楼-- · 2019-07-21 06:35

试下沟下这玩意!!!!
arcrong
3楼-- · 2019-07-21 09:57
 精彩回答 2  元偷偷看……
zdfwyh
4楼-- · 2019-07-21 13:45
结构变量声明不对应该是 struct FILE __stdout; 
_sys_exit(int x) 函数声明没有注明返回类型,不支持没人的int返回类型,需要明确声明void  _sys_exit(int x)
int fputc(int ch, FILE *f)  -> int fputc(int ch, struct  FILE *f)
arcrong
5楼-- · 2019-07-21 14:56
回复【4楼】zdfwyh:
---------------------------------
Srcsp.cpp(891): error:  #1340: typedef "FILE" may not be used in an elaborated type specifier
还是不行的,不知道是不是C++语言的问题.
正点原子
6楼-- · 2019-07-21 20:11
你啥编译器啊?

一周热门 更多>