プロトタイプ宣言で extern func(short); 関数呼び側で short val; func(&val); 解説 プロトタイプ宣言が間違っていませんか? この場合short変数のアドレス(32bit)を関数呼び側で送っていますが、 プロトタイプ宣言がshort(16bit)なのでアドレス半分が欠損します。