2013-01-25 99 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

確實。只要小心大小 –

相關問題