打印
[STM32G4]

用ac6怎么重定向printf啊?

[复制链接]
954|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Jacquetry|  楼主 | 2024-2-19 15:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看着ac5的教程移植出错啊

使用特权

评论回复
沙发
gaonaiweng| | 2024-2-22 15:59 | 只看该作者
在一些情况下,你可能需要修改链接脚本以确保数据段正确地映射到内存中。

使用特权

评论回复
板凳
麻花油条| | 2024-2-22 16:56 | 只看该作者
在 C 语言中,重定向 printf 函数通常意味着改变其输出目标,使其不再输出到标准输出(通常是终端或控制台),而是输出到文件或其他地方。这通常通过改变 stdout(标准输出)的流来实现。

以下是一个简单的示例,展示了如何将 printf 的输出重定向到一个文件:

c
复制代码
#include <stdio.h>  
  
int main() {  
    // 打开一个文件用于写入  
    FILE *fp = fopen("output.txt", "w");  
  
    // 如果文件打开失败,输出错误信息并退出  
    if (fp == NULL) {  
        perror("Error opening file");  
        return 1;  
    }  
  
    // 保存原来的 stdout  
    FILE *old_stdout = stdout;  
  
    // 重定向 stdout 到文件  
    stdout = fp;  
  
    // 现在 printf 的输出会被写入到文件  
    printf("Hello, World!\n");  
  
    // 恢复原来的 stdout  
    stdout = old_stdout;  
  
    // 关闭文件  
    fclose(fp);  
  
    return 0;  
}
在这个示例中,我们首先使用 fopen 函数打开一个文件用于写入。然后,我们保存原来的 stdout 指针,并将 stdout 重定向到我们打开的文件。这样,任何后续的 printf 调用都会将输出写入到文件,而不是控制台。最后,我们恢复了原来的 stdout,并关闭了文件。

请注意,这种方**全局地改变 printf 的行为,因此在完成重定向后,最好尽快恢复 stdout 的原始值,以避免对其他代码产生意外的副作用。

使用特权

评论回复
地板
夜阑风雨| | 2024-3-19 23:03 | 只看该作者
可能是你的编译器不支持AC6?

使用特权

评论回复
5
三生万物| | 2024-3-20 01:00 | 只看该作者
你用的是keil那个版本?

使用特权

评论回复
6
江河千里| | 2024-3-20 03:00 | 只看该作者
看看你的报错信息呗?

使用特权

评论回复
7
冰春彩落下| | 2024-3-20 05:00 | 只看该作者
建议直接使用cubemx配置printf就比较好

使用特权

评论回复
8
一秒落纱| | 2024-3-20 07:00 | 只看该作者
这种就是配置个串口吧,剩下的重定义不是需要自己写的么

使用特权

评论回复
9
光辉梦境| | 2024-3-20 09:00 | 只看该作者
移植出错?提示啥内容啊?

使用特权

评论回复
10
暖了夏天蓝了海| | 2024-3-20 11:00 | 只看该作者
看看你的代码呗,看看你咋写的

使用特权

评论回复
11
远山寻你| | 2024-3-20 13:00 | 只看该作者
一般直接使用AC5就挺好了,主要是比较稳定

使用特权

评论回复
12
别乱了阵脚| | 2024-3-20 23:00 | 只看该作者
AC5和AC6的差距不小的吧,所以移植也得看AC5才行啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

96

主题

1752

帖子

0

粉丝