Sun Studio 12 Update 1: C++ ユーザーズガイド

関数の多重定義

識別子書式を使用するとき、プラグマのあるスコープ中には指定した名前を持つ関数は、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 の『リンカーとライブラリ』を参照してください。