在使用VC 2005 的開(kāi)發(fā)者會(huì)遇到這樣的問(wèn)題,在使用std命名空間庫(kù)函數(shù)的時(shí)候,往往會(huì)出現(xiàn)類似于下面的警告:
warning C4996: strcpy was declared deprecated
出現(xiàn)這樣的警告,是因?yàn)閂C2005中認(rèn)為CRT中的一組函數(shù)如果使用不當(dāng),可能會(huì)產(chǎn)生諸如內(nèi)存泄露、緩沖區(qū)溢出、非法訪問(wèn)等安全問(wèn)題。這些函數(shù)如:strcpy、strcat等。
對(duì)于這些問(wèn)題,VC2005建議使用這些函數(shù)的更高級(jí)的安全版本,即在這些函數(shù)名后面加了一個(gè)_s的函數(shù)。這些安全版本函數(shù)使用起來(lái)更有效,也便于識(shí)別,如:strcpy_s,calloc_s等。
當(dāng)然,如果執(zhí)意使用老版本、非安全版本函數(shù),可以使用_CRT_SECURE_NO_DEPRECATE標(biāo)記來(lái)忽略這些警告問(wèn)題。辦法是在編譯選項(xiàng) C/C++ | Preprocessor | Preprocessor Definitions中,增加_CRT_SECURE_NO_DEPRECATE標(biāo)記即可。
補(bǔ)充:
然而,本以為上面的說(shuō)法是件漂亮的法子,不想用后不爽。遂用舊法:
#pragma warning(disable:4996) //全部關(guān)掉
#pragma warning(once:4996) //僅顯示一個(gè)