嵌入式学习小组
直播中

yqdedli

8年用户 873经验值
擅长:控制/MCU
私信 关注

关于IAR中使用官方例程报__stdout和__stdin was declared问题求解

Error[Pe235]: variable "__stdout" was declared with a never-completed type

Error[Pe235]: variable "__stdin" was declared with a never-completed type

编绎器IAR V8.30.1,在使用新唐NM1200官方例程时,产生上述报错问题,请各位大神指教。

回帖(1)

陈敏

2024-1-4 15:18:41
这个问题一般是由于缺少对标准输入输出流的定义引起的。可以通过以下步骤解决:

1. 打开文件"stdio.h"。

2. 搜索"#define __ICCARM 1"。

3. 在该行下面添加以下代码:

```
#pragma import(__use_no_semihosting) /* 禁用半主机模式 */
struct __FILE
{
    int dummy;
};
/* 定义FILE类型 */
typedef struct __FILE FILE;
/* 定义stdin、stdout、stderr以及它们的默认设备 */
extern FILE __stdout;
#define stdout (&__stdout)
extern FILE __stdin;
#define stdin (&__stdin)
extern FILE __stderr;
#define stderr (&__stderr)
/* 定义fputc函数,重定向输出stderr指向虚拟终端*/
int fputc(int ch, FILE *f)
{
    if (f == stderr)
    {
        /* 在这里实现输出到虚拟终端 */
    }
    return (ch);
}
```
4. 编译和运行。

这样,您就可以使用标准输入输出流了。如果您仍然遇到问题,请尝试在IAR安装目录中搜索相关文件并向IAR技术支持团队寻求帮助。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分