#pragma map

C に適用 C++ に適用

説明

#pragma map ディレクティブは、ID に対するすべての参照を "name" に変換するようにコンパイラーに指示します。

構文


構文図

ここで、


identifier 外部結合を持つデータ・オブジェクトまたは多重定義されていない関数の名前。
C++ に適用ID が多重定義関数またはメンバー関数の名前である場合、プラグマはコンパイラーにより生成された名前をオーバーライドするおそれがあります。これにより、リンク時に問題が生じます。
function_signature 内部リンケージを持つ関数または演算子の名前。この名前は修飾できます。
name 指定したオブジェクト、関数、または演算子にバインドされる外部名。


C++ に適用C++ 名 (C++ のデフォルト・シグニチャーである C++ リンケージ・シグニチャーを持つ名前) にリンクする場合は、マングルされた名前を指定します。下のの、例 4 を参照してください。

#pragma map を使用して、以下のものをマップしないでください。

このディレクティブは、プログラムのどこに記述してもかまいません。ディレクティブ内に現れる ID は、プロトタイプ引き数リストで使用されるすべての型名を含めて、実際の発生箇所とは無関係に、ディレクティブがファイル・スコープで現れた場合と同様に解決されます。

例 1 C に適用

int funcname1()
{
    return 1;
}
 
#pragma map(func , "funcname1")    /* maps func to funcname1 */
 
int main()
{
   return func();       /* no function prototype needed in C */
}
 

例 2 C++ に適用

extern "C" int funcname1()
{
  return 0;
}
 
extern "C" int func();  //function prototypes needed in C++
 
#pragma map(func , "funcname1") // maps ::func to funcname1
 
int main()
{
  return func();
}

例 3 C++ に適用

#pragma map(foo, "bar")
 
int foo();              //function prototypes needed in C++
 
int main()
{
   return foo();
}
 
extern "C" int bar() {return 7;}

関連参照

汎用プラグマ IBM Copyright 2003