たとえば、32ビット値のバイトを交換する関数があるとします。
uint32_t byte_swap(uint32_t in);
その32ビット値をスタックにプッシュして再度ポップするのはばかげているようです。特にこの関数を頻繁に呼び出す場合は、ECXを介して渡します。
#if __FASTCALL_SUPPORTED_ /* Whatever this may be */
#define FASTCALL __attribute__((fastcall))
#else
#define FASTCALL
#endif
uint32_t FASTCALL byte_swap(uint32_t in);
今私の質問は、その関数を配布用の共有ライブラリにコンパイルしても安全ですか?ユーザーが別のコンパイラを使用してプログラムとこれに対するリンクをコンパイルした場合でも、関数は正しく呼び出されますか?