識別子書式を使用するとき、プラグマのあるスコープ中には指定した名前を持つ関数は、1 つしか存在してはいけません。多重定義関数に識別子書式の #pragma weak を使おうとすると、エラーになります。次に例を示します。
int bar(int); float bar(float); #pragma weak bar // あいまいな関数名により、エラー |
このエラーを回避するには、文字列書式を使用します。例を次に示します。
int bar(int); float bar(float); #pragma weak "__1cDbar6Fi_i_" // float bar(int) を弱いシンボルにする |
詳細は、Solaris の『リンカーとライブラリ』を参照してください。