Oracle® Solaris Studio 12.4: C ユーザーガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

2.11.27 weak

#pragma weak symbol1 [= symbol2]

このプラグマは「弱い大域シンボル」を定義します。これは主に、ライブラリの構築時に使用されます。リンカーは弱いシンボルを解決できなくてもエラーメッセージを表示しません。

#pragma weak symbol

これは symbol を弱いシンボルとして定義しています。symbol の定義が見つからなくても、リンカーはエラーメッセージ等を出さなくなります。

#pragma weak symbol1 = symbol2

これは symbol1 を、symbol2 の別名である弱いシンボルと定義します。この形式のプラグマは、ソースファイルまたはそこにインクルードされたヘッダーファイルのいずれかで、symbol2 を定義した同じ変換ユニットの中にかぎり使用できます。それ以外で使用された場合は、コンパイルエラーになります。

プログラムが symbol1 を呼び出すけれども定義しておらず、symbol1 がリンクするライブラリ内で弱いシンボルの場合には、リンカーはそのライブラリからの定義を使用します。しかし、プログラムが独自のバージョンの symbol1 を定義している場合は、プログラムでの定義が使用され、ライブラリ内の symbol1 の弱い大域定義は使用されません。プログラムが symbol2 を直接呼び出す場合は、ライブラリからの定義が使用されます。symbol2 の重複定義は、エラーになります。