使用没有stdio.h头文件的stdout

时间:2015-04-08 07:18:43

标签: c stdio

所以我试图将使用标准库的C程序转换为独立的应用程序(这是一项任务)。这涉及为printfmallocfree等编写简单函数。在处理此问题时,我遇到了转换fflush(stdout)的问题,因为stdout是包含在stdio.h中,必须替换为其他内容。

当然,我看着stdio.h中的宏看起来像:

#define stdout   (__iob[1])

我在我的C文件中使用了这个宏声明,删除了stdio.h标头,并尝试编译它,但它给出了一个错误__iob未声明。当我更详细地查看源文件时,有一个数据结构:

extern struct __file *__iob[];

包含这个,在编译时,它会在下面给出另一个错误,我不知道该怎么做:

/tmp/ccOTmFBR.o: In function `func1':
program.c:(.text+0x46): undefined reference to `__iob'
/tmp/ccOTmFBR.o: In function `func2':
program.c:(.text+0xff): undefined reference to `__iob'
collect2: error: ld returned 1 exit status
make: *** [all] Error 1

我的问题基本上是在不使用fflush(stdout)的情况下在C程序中替换stdio.h的最简单方法。

0 个答案:

没有答案