我有下載gcc的源代碼,使用這個命令:我在哪裏可以找到GCC源代碼中的strncpy()函數的實現?
svn checkout svn://gcc.gnu.org/svn/gcc/trunk SomeLocalDir
誰能告訴我在哪裏可以找到標準庫函數strncpy()函數的實現()?
謝謝。
我有下載gcc的源代碼,使用這個命令:我在哪裏可以找到GCC源代碼中的strncpy()函數的實現?
svn checkout svn://gcc.gnu.org/svn/gcc/trunk SomeLocalDir
誰能告訴我在哪裏可以找到標準庫函數strncpy()函數的實現()?
謝謝。
gcc
實際上並不包含strncpy
的來源,因爲gcc
包含編譯器代碼而不是標準庫代碼。
你想從GNU的libc(glibc的)來源:
這是glibc中的電流乾線實現strncpy.c
的鏈接。
改爲運氣更好looking in glibc。
strncpy()函數屬於C運行時庫,所以你可以在glibc的,而不是GCC(編譯器)中找到它。
這些答案是正確的,因爲標準C庫將實現strncpy
。 但是,gcc有builtin函數可能由編譯器生成 - 作爲中間代碼,而不是鏈接的函數調用 - 其中strncpy
是一個。這些可以通過明確禁用。
在gcc源代碼樹中,您可以在gcc/builtins.c
和gcc/builtins.def
中找到代碼生成模式。在中間表示中實例化允許更積極的優化,並消除通話開銷。
它將在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
而且你可能會想要[閱讀此](http://the-flat-trantor-society.blogspot.com/2012/03/no-strncpy-is-not-safer-strcpy.html)。 – 2012-03-11 05:16:49
請注意,gcc一般使用OS提供的任何庫。在Linux系統上,這是glibc;在大多數其他系統上,它將是別的東西。 – 2012-03-11 05:17:28