2012-03-11 5 views
0

私は、このコマンドを使用して、GCCのソースコードをダウンロードしている:私に言うことができるGCCのソースコードでstrncpy()関数の実装はどこにありますか?

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

は私が)(標準ライブラリ関数のstrncpyの実装を見つけることができますか?

ありがとうございます。

+1

gccソースではなくlibcになります。http://sourceware.org/git/?p=glibc.git;a=blob_plain;f=string/strncpy.c;hb=HEAD – Anycorn

+4

[これを読む](http://the-flat-trantor-society.blogspot.com/2012/03/no-strncpy-is-not-safer-strcpy.html)したい。 –

+1

gccは通常、OSが提供するライブラリを使用します。 Linuxシステムではglibcです。他のほとんどのシステムでは、それは他のものになります。 –

答えて

0

はstrncpyは、Cランタイムライブラリに属しているので、あなたの代わりにGCC(コンパイラ)のglibcの中でそれを見つけることができます。

4

標準のCライブラリでstrncpyが実装されているという点で、これらの回答は正しいです。 しかし、の場合、gccには、strncpyが1である中間コードとして、リンクされた関数呼び出しではなくコンパイラによって生成される可能性のあるbuiltin関数があります。これらは、​​で明示的に無効にすることができます。

gccソースツリーでは、コード生成パターンはgcc/builtins.cgcc/builtins.defにあります。中間表現でインスタンス化されることにより、はるかに積極的な最適化が可能になり、コールオーバーヘッドがなくなります。

関連する問題