私はこれについてのパーティーに少し遅れていることを知っていますが、誰かがこれに遭遇した場合は、それを模倣するマクロを定義できることを覚えておいてください。例えば:
#if defined(__GNUC__)
#define MSFASTCALL __fastcall
#define GCCFASTCALL
#elif defined(_MSC_VER)
#define MSFASTCALL
#define GCCFASTCALL __attribute__((fastcall))
#endif
int MSFASTCALL magic() GCCFASTCALL;
明らかに、これはちょっと醜いように見えるので、2つのプロトタイプを定義するだけで(私がやっていることです)、少し読みやすくすることができますが、入力の必要が少ないルートを好む人もいます。特別な場合を除いて、私は通常、呼び出し規約を使用しません。残りはコンパイラに最適化させます。
さて、覚えておくべきいくつかの癖があります。たとえば、64ビットプラットフォームをターゲットにしている場合、すべての関数はfastcall規則を利用して、追加のレジスタを利用し、速度を向上させ、間接コストを削減します。同様に、fastcallは標準化されていないため、プラットフォームごとに実装が異なります。他にもいくつかありますが、頭のてっぺんから引き抜くことができるのはそれだけです。