在复现APUE的p131页的代码时候,总是有报错,而报错相关的消息就是_IO_UNBUFFERED和_IO_LINE_BU这几个宏是未定义的
我用的是Ubuntu系统
gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)
第一反应是 是否没有加入相关头文件,但是Google了好久都发现这几个宏定义都均在<stdio.h>中,因此心态直接爆照!
接着参阅了国外的一些网站上的,都没有这些问题的解决办法,但是半摸索着找到了两种解决办法,我都试了一遍发现都可以
方法一
上述两个宏没有定义,则自己定义一下,如下代码
#define _IO_UNBUFFERED 0x0002
#define _IO_LINE_BUF 0x0200
方法二
缓冲定义表有以下两种形式
缓冲区类型 | 定义的宏1 | 定义的宏2 |
---|---|---|
全缓冲 | _IO_FULL_BUF | _IOFBF |
行缓冲 | _IO_LINE_BUF | _IOLBF |
无缓冲 | _IO_UNBUFFERED | _IONBF |
一般若_IO_UNBUFFERED不能用的话就可以用_IONBF