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