【问题标题】:'strndup' not defined in this scope'strndup' 未在此范围内定义
【发布时间】:2013-07-05 05:54:20
【问题描述】:

我正在尝试使用 MinGW (GCC 4.8) 在 Windows 上编译 libzqm。编译因以下错误而终止:

'strndup' was not declared in this scope

那么,strndup 应该在 string.h 中,对吗?我尝试将/mingw/x86_64-w64-mingw32/include 添加到CXXFLAGS,但没有成功。

有什么建议吗?

【问题讨论】:

  • 你不是说strndup吗?
  • 你不应该指望它在那里。这不是标准功能。
  • 这个问题似乎是题外话,因为它是关于一个错字(过于本地化)。
  • @H2CO3 不,这不是错字。当我在 SO 中输入错误时发生了错字。源代码使用strndup,而 mingw 发行版中似乎没有提供。

标签: c mingw zeromq


【解决方案1】:

尝试添加

#define _GNU_SOURCE

之前

#include <string.h>

strndup 不是标准 C,但如果您使用 GNU libc,则可以通过包含上述扩展来获得它。

【讨论】:

  • 由于 strndup() 是当前 POSIX 标准的一部分,至少使用 -D_POSIX_C_SOURCE=200809L 进行编译也可以。