当我使用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;
}
是否可以使用strlcpy
和std=c++0x
标志,或者我必须放弃后者?
此外,我无法在cygwin中找到strlcpy
联机帮助页,即使它们似乎具有此功能。有什么指针吗?
我在cygwin上使用gcc 4.7.2。
答案 0 :(得分:0)
引用维基百科:Criticism on strlcpy
更受欢迎的strlcat和strlcpy在此基础上受到批评 他们鼓励使用C字符串,从而产生更多问题 比他们解决的。因此他们没有被包括在内 GNU C库(由Linux上的软件使用),尽管它们是 在OpenBSD,FreeBSD,NetBSD,Solaris,Mac OS X,QNX和 甚至在Linux内核内部。