我需要通过使用fcntl
使用F_SETPIPE_SZ
的FIFO大小更改属性。为此,我需要使用#define _GNU_SOURCE
。但是,我的代码还涉及strerror_r
函数。通常,我使用它的 XSI兼容,但是当我添加#define _GNU_SOURCE
时,由于它更喜欢使用GNU的strerror_r
,因此它会自动产生以下错误。
error: initialization makes integer from pointer without a cast [-Werror=int-conversion]
int error_num = strerror_r(errno, ERROR_MESSAGE_BUFF, ERROR_MESSAGE_LENGTH);
^~~~~~~~~~
cc1: all warnings being treated as errors
由于相同的原因,我还需要将#define _DEFAULT_SOURCE
用于其他声明/定义。当我使用以下两个时,如何使用 XSI兼容 strerror_r
#define _GNU_SOURCE
#define _DEFAULT_SOURCE