2009年2月24日

[linux-users:108222] Re: [linux-users:108221] Re: linux 関数名 先頭文字  __ について?

こんばんわ
Jia Lu です。

ご参考まで
__asm__などアンダーバー2本で始まった関数(変数)はGCCなどのコンパイラにより特殊扱いされる場合もあります。

例:
__asm__ などはアセンブラコード直接処理


よろしくお願いします
Jia Lu

2009/2/24 Kawasaki Tatsuo <kawasaki@xxxxx>

> こんばんは。
>
> 特に2つという理由はないはずで、変数/関数名の衝突を防ぐために
> 利用しているかと思います。(識者の方、フォローお願いします)
>
> カーネル付属文書のCodingStyleには、名前は短いほうが良いとは
> あるんですが、アンダースコアについての記載はなさそうです。
> http://lxr.linux.no/linux+v2.6.28.7/Documentation/CodingStyle
>
> ちなみにアンダースコアの数については以下のように
> static inline void *____cache_alloc_node(struct kmem_cache *cachep,
> gfp_t flags, int nodeid)
> {
> return NULL;
> }
> それ以上多いものもありますし、逆にひとつの関数も存在しています。
>
> int __sched _cond_resched(void)
> {
> :
> }
>
> ご参考まで。
>
> On Tue, 24 Feb 2009 19:32:53 +0900
> tanaka <tanaka_hideo@xxxxx> さん wrote:
>
> > linux のソースを見た時に
> > 例えば
> > extern void vide(void);
> > __asm__(".align 4\nvide: ret");
> >
> > ---------------------------------------
> >
> > static void __cpuinit init_amd_k5(struct cpuinfo_x86 *c)
> > {
> >
> > ..........
> > ..........
> > ..........
> >
> > ---------------------------------------
> >
> > などのように
> > 先頭に __(アンダーバー 2つ)を付けているのですが
> > これは、何か理由があるのでしょうか?
> >
> > また、
> > 先頭に _(アンダーバー 1つだけ)の時などは
> > 存在するのでしょうか?
>
> --
> Tatsuo Kawasaki
> kawasaki at wwing.net
>
>
>
>

投稿者 xml-rpc : 2009年2月24日 21:35
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/82647
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。