如何在g ++的-std = c ++ 0x模式下使用strlcpy?

时间:2013-01-25 09:47:09

标签: g++ cygwin string.h

当我使用g ++的strlcpy参数时,我想使用string.h(调用外部api),这是-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标志,或者我必须放弃后者?

此外,我无法在cygwin中找到strlcpy联机帮助页,即使它们似乎具有此功能。有什么指针吗?

我在cygwin上使用gcc 4.7.2。

1 个答案:

答案 0 :(得分:0)

引用维基百科:Criticism on strlcpy

  

更受欢迎的strlcat和strlcpy在此基础上受到批评   他们鼓励使用C字符串,从而产生更多问题   比他们解决的。因此他们没有被包括在内   GNU C库(由Linux上的软件使用),尽管它们是   在OpenBSD,FreeBSD,NetBSD,Solaris,Mac OS X,QNX和   甚至在Linux内核内部。