2013-01-25 209 views
0

我想使用strlcpy(称为外部API),这是从string.h,当我使用g ++的-std=c++0x参数缺少。如何在g ++的-std = C++ 0x模式下使用strlcpy?

% 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。

回答

0

引述维基百科:Criticism on strlcpy

目前比较流行的strlcat提供和是strlcpy被批评的基础 他们鼓励使用C++字符串,从而创造更多的问题 比它们解决的。因此,即使在Linux内核中,它们也未包含在OpenBSD,FreeBSD,NetBSD,Solaris,Mac OS X,QNX和Linux内核中的 GNU C库中(由Linux上的软件使用),尽管它们是 。

+0

由于在我的情况下不使用c字符串的唯一替代方法是删除外部api,我宁愿使用“更安全”的c字符串函数,你不同意吗? –

+0

确实。只要小心大小 –

相关问题