weak 関数属性があると、関数宣言の結果によるシンボルは、オブジェクト・ファ
イルの中に、グローバル・シンボルとしてではなく、弱いシンボルとして現れます。この言語機能は、ライブラリー関数を
書くプログラマーが、ユーザー ・コード内の変数定義で、重複した名前エラーを起こすことなく、ラ
イブラリー関数宣言をオーバーライドするための機能です。

weak 関数属性の構文
>>-__attribute__--((--+-weak-----+--))-------------------------><
'-__weak__-'