|
===================================== 〔語彙分解〕的な部分一致の検索結果は以下の通りです。 ・ 名 : [な] 【名詞】 1. name 2. reputation ・ 名前 : [なまえ] 【名詞】 1. name ・ 修飾 : [しゅうしょく] 1. (n,vs) (1) ornamentation 2. embellishment 3. decoration 4. adornment 5. polish up (writing) 6. (2) modification (gram) 7. qualification
名前修飾(なまえしゅうしょく)は、現代的なプログラミング言語処理系で用いられる手法である。プログラム内の各種実体に一意の名前を与えることで、様々な問題を解決する。 この手法を用いると、サブルーチン(関数)、構造体、クラス他のデータ型に付加的な情報を追加し、より多くの意味論的な情報をコンパイラからリンカへ渡すことができるようになる。 このような付加的情報は、プログラミング言語が名前空間(モジュール、クラス、あるいは明示的な ''namespace'' 指令で示される)さえ異なれば、異なる実体に同一の識別子を与えることを許す場合に必要になってくる。 コンパイラが生成したオブジェクトコードは、リンカによって通常他のオブジェクトコード(生成するのに同一のコンパイラを用いる場合も異なるコンパイラを用いる場合もある)とリンクされる。リンカはプログラム内の各実体について多くの情報を必要とする。例えば、関数を正しくリンクするためには関数の名前、引数の数、引数の型、他の情報が必要である。 == Microsoft Windowsの場合 == 一般的なC・Pascalなどの言語は関数の多重定義をサポートせず、名前修飾を必要としないが、場合によっては名前修飾によって関数についての情報を付加することがある。 例えば、Microsoft Windows 上のコンパイラは複数の呼出規約(サブルーチンとデータをやりとりする方法)をサポートしている。呼出規約の間には互換性がないので、コンパイラは名前修飾によって呼出規約を詳細に記述する。 MSによって確立された名前修飾のスキームがあり、非公式に他のコンパイラもこれに従っている。例えば、Digital Mars・ボーランド・gccである。このスキームは他の言語、例えば、Pascal・D言語・Delphi・FORTRAN・C#にも適用される。このようにして、それら処理系のデフォルトの呼出規約が異なる場合も、それら処理系で作成したサブルーチンが現存のWindows ライブラリを呼んだり、そこから呼ばれたりすることができる。 次のCコードをコンパイルするとしよう: _cdecl はCの標準の呼び出し規約である。32 bit コンパイラはそれぞれ、以下を出力する。 _f _g@4 @h@4 stdcallとfastcallでは、関数名は_名前@X と @名前@Xのようにエンコードされる。Xにはコールスタック(以下単にスタック)に積まれる引数のバイト数が入る。 他の一般的な修飾法は、前置句 (prefix) を、下線付きで(__func__のように)あるいは標準的な大文字化を行ったりして加えるものである。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「名前修飾」の詳細全文を読む スポンサード リンク
|