所以我试图将使用标准库的C程序转换为独立的应用程序(这是一项任务)。这涉及为printf
,malloc
,free
等编写简单函数。在处理此问题时,我遇到了转换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
的最简单方法。