extern void abort (void); void __cdecl lib2foocdecl(int junk1, int* junk2); void __stdcall lib2foostdcall(int junk1, int* junk2); void __fastcall lib2foofastcall(int junk1, int* junk2); void __cdecl lib1foocdecl(int junk1, int* junk2) { lib2foocdecl(junk1, junk2); } void __stdcall lib1foostdcall(int junk1, int* junk2) { lib2foostdcall(junk1, junk2); } void __fastcall lib1foofastcall(int junk1, int* junk2) { lib2foofastcall(junk1, junk2); } int main() { int junk[3]; lib1foofastcall (1, &junk[0]); lib1foostdcall (2, &junk[1]); lib1foocdecl (3, &junk[2]); if (junk[1] != 2 || junk[0] != 1 || junk[2] != 3) abort (); return 0; }