当我使用--std=c99
GCC定义__STRICT_ANSI__
时,当它打开时,BSD和System V功能不会启动。它暗示__USE_MISC
和__USE_POSIX
是左未定义。
-- stdio.h --
...
#if defined __USE_POSIX || defined __USE_MISC
extern int getc_unlocked (FILE *__stream);
extern int getchar_unlocked (void);
#endif /* Use POSIX or MISC. */
...
在结果中,省略了我想要使用的函数。我的问题是如何在C99中实现标准流上的I / O操作但没有锁定?
答案 0 :(得分:3)
使用-std=gnu99
代替-std=c99
,它会按照您想要的方式运作。
答案 1 :(得分:0)
POSIX实际上说,所有可移植程序应该在包含任何标头之前,使用希望标头遵守的Posix标准版本定义宏_POSIX_C_SOURCE
。因此:
#define _POSIX_C_SOURCE 200809L
#include <stdio.h>