関数修飾子
宣言構文:インデックス への移動
このセクションでは、CodeGear C++ コンパイラで使用できる関数修飾子について説明します。
__declspec(dllexport)、__declspec(dllimport) の各修飾子を使用して関数を修飾することができます。
32 ビット プログラムでは、修飾子のキーワードをクラス宣言、関数宣言、および変数宣言に付けることができます。
__declspec(dllexport) 修飾子を付けると、関数は Windows からエクスポート可能になります。__declspec(dllimport) 修飾子を付けると、関数は Windows プログラムで使用可能になります。これらのキーワードは、実行可能ファイル(スマート コールバックを使用しない場合)または DLL で使用します。
__fastcall 修飾子を付けて宣言された関数は、同じ関数に __fastcall を付けない場合とは異なる名前になります。__fastcall 関数名の先頭には、コンパイラによってアットマーク(@)が付けられます。このプレフィクスは、マングル(変換)されていない C 関数名にも、マングルされている C++ 関数名にも付いています。
C++Builder の修飾子:
修飾子 | 対象 | 説明 |
---|---|---|
const |
変数 |
オブジェクトが変更されないようにします。 |
volatile |
変数 |
レジスタの割り当てとある種の最適化が行われないようにします。オブジェクトが評価中に外部から変更される可能性があることをコンパイラに警告します。 |
__cdecl |
関数 |
C の引数受け渡し規約に従います。リンク時の名前が変わります。これがデフォルトの設定です。 |
__cdecl |
変数 |
グローバル識別子の大文字/小文字を区別し、C では名前の先頭に下線記号(_)を付けます。これがデフォルトの設定です。 |
__pascal |
関数 |
Pascal の引数受け渡し規約に従います。リンク時の名前が変わります。 |
__pascal |
変数 |
グローバル識別子の大文字/小文字を区別せず、C では名前の先頭に下線記号(_)を付けません。 |
__import |
関数またはクラス |
インポートする関数またはクラスをコンパイラに指示します。 |
__export |
関数またはクラス |
エクスポートする関数またはクラスをコンパイラに指示します。 |
__declspec(dllimport) |
関数またはクラス |
インポートする関数またはクラスをコンパイラに指示します。この方法を推奨します。 |
__declspec(dllexport) |
関数またはクラス |
エクスポートする関数またはクラスをコンパイラに指示します。この方法を推奨します。 |
__fastcall |
関数 |
レジスタによる引数受け渡し規約に従います。リンク時の名前が変わります。 |
__stdcall |
関数 |
標準の Win32 引数受け渡し規約に従います。 |
C++ では、const と volatile が拡張され、クラスとメンバ関数にもこれらを指定できるようになっています。