Fortran、C/C++、および MASM (Windows*) でのプロシージャー名の処理について次に示します。MASM では、CASEMAP: ALL オプションが使用されている場合、この表は適用されません。
言語 |
属性 |
変換後の名前 |
.OBJ ファイル中の名前の大文字と小文字 |
---|---|---|---|
Fortran |
cDEC$ ATTRIBUTES C |
name (Linux*) _name (Windows) _name (Mac OS* X) |
すべて小文字 |
Fortran (Windows) |
cDEC$ ATTRIBUTES STDCALL |
_name@n |
すべて小文字 |
Fortran |
default |
name_ (Linux) _name (Windows) _name_ (Mac OS X) |
すべて大文字 |
C |
cdecl (デフォルト) |
name (Linux) _name (Windows) _name (Mac OS X) |
大文字と小文字を区別する |
C (Windows のみ) |
__stdcall |
_name@n |
大文字と小文字を区別する |
C++ |
デフォルト |
name@@decoration (Linux) _name@@decoration (Windows) __decorationnamedecoration (Mac OS X) |
大文字と小文字を区別する |
Linux、Mac OS X アセンブリー |
デフォルト |
name (Linux) _name (Mac OS X) |
大文字と小文字を区別する |
MASM (Windows) |
C (PROTO 宣言および PROC 宣言) |
_name |
大文字と小文字を区別する |
MASM (Windows) |
STDCALL (PROTO 宣言および PROC 宣言) |
_name@n |
大文字と小文字を区別する |
上記の表で使用されている記号の意味は、次のとおりです。
先頭の下線 ( _name など) は、IA-32 アーキテクチャー・ベースの Windows システムでのみ使用されます。
@n は、10 進数表記のスタックスペースを表します。これは、IA-32 アーキテクチャー・ベースの Windows システム上でのみパラメーターで占有されます。
例えば、関数が C で次のように宣言されているとします。
extern int __stdcall Sum_Up( int a, int b, int c );
各整数は 4 バイトを占有しているため、IA-32 アーキテクチャー・システムで .OBJ ファイルに格納されるシンボル名は次のようになります。
_Sum_Up@12
インテル® 64 アーキテクチャー・システムおよび IA-64 アーキテクチャー・システムで .OBJ ファイルに格納されるシンボル名は次のようになります。
Sum_Up