2012-03-11 91 views
0

我有下載gcc的源代碼,使用這個命令:我在哪裏可以找到GCC源代碼中的strncpy()函數的實現?

svn checkout svn://gcc.gnu.org/svn/gcc/trunk SomeLocalDir 

誰能告訴我在哪裏可以找到標準庫函數strncpy()函數的實現()?

謝謝。

+1

它將在libc中,而不是gcc源代碼:http://sourceware.org/git/?p=glibc.git;a=blob_plain;f=string/strncpy.c;hb=HEAD – Anycorn 2012-03-11 05:11:37

+4

而且你可能會想要[閱讀此](http://the-flat-trantor-society.blogspot.com/2012/03/no-strncpy-is-not-safer-strcpy.html)。 – 2012-03-11 05:16:49

+1

請注意,gcc一般使用OS提供的任何庫。在Linux系統上,這是glibc;在大多數其他系統上,它將是別的東西。 – 2012-03-11 05:17:28

回答

0

strncpy()函數屬於C運行時庫,所以你可以在glibc的,而不是GCC(編譯器)中找到它。

4

這些答案是正確的,因爲標準C庫將實現strncpy但是,gcc有builtin函數可能由編譯器生成 - 作爲中間代碼,而不是鏈接的函數調用 - 其中strncpy是一個。這些可以通過​​明確禁用。

在gcc源代碼樹中,您可以在gcc/builtins.cgcc/builtins.def中找到代碼生成模式。在中間表示中實例化允許更積極的優化,並消除通話開銷。

相關問題