0

当我使用 g++ 的参数时,我想使用strlcpy(调用外部 api),这是缺少的。string.h-std=c++0x

% g++ -std=c++0x foo.cpp
foo.cpp: In function 'int main(int, char**)':
foo.cpp:5:11: error: 'strlcpy' was not declared in this scope
% g++ foo.cpp
% cat foo.cpp
#include <string.h>

int main(int argc, char* argv[])
{
  const char src[] = "foo";
  char dest[1024] = { 0 };
  strlcpy(dest, src, sizeof(dest));
  return 0;
}

是否可以使用strlcpystd=c++0x标志,还是我必须放弃后者?

strlcpy此外,即使它们似乎具有该功能,我也无法在 cygwin 中找到手册页。任何指针?

我在 cygwin 上使用 gcc 4.7.2。

4

1 回答 1

0

引用维基百科:对 strlcpy 的批评

更流行的 strlcat 和 strlcpy 受到批评,因为它们鼓励使用 C 字符串,因此产生的问题多于它们解决的问题。因此,尽管它们在 OpenBSD、FreeBSD、NetBSD、Solaris、Mac OS X、QNX 甚至在 Linux 内核内部实现,但它们并未包含在 GNU C 库(由 Linux 上的软件使用)中。

于 2013-01-25T09:55:04.727 回答