C++ プログラミングガイド

#pragma weak

#pragma weak function-name1 [=function-name2]

function-name1 は関数名を、function-name2 は複数の関数を指定する場合の 2 つ目の関数名を示します。

weak を使用すると、弱い (weak) 大域シンボルを定義できます。このプラグマは主にソースファイルの中でライブラリを構築するために使用されます。リンカーは弱いシンボルを認識できなくてもエラーメッセージを出しません。

次の指令は、bar を弱いシンボルとして定義しています。リンカーが bar という関数の定義を見つけられなくても、エラーメッセージは生成されません。


#pragma weak bar

次の指令は、プログラム内の任意の位置に bar が定義されている場合は bar に対するすべての参照を解決し、bar が定義されていない場合は foo に対するすべての参照を解決するようにリンカーに指示します。


#pragma weak bar = foo

weak プラグマ内で関数を使用するには、使用前にその関数の宣言を行う必要があります。次に例を示します。


extern void bar(int)
extern void _bar(int)
#pragma weak _bar=bar

#pragma weak を使用する場合の効果は次のとおりです。

詳細は、Solaris のマニュアル『リンカーとライブラリ』を参照してください。


注 -

プラグマ内の名前は、リンカーが認識できるものでなければなりません。つまり、関数に C++ リンケージがある場合には「符号化された」名前でなければなりません。