例如,假设我有一个函数可以为您交换 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);
现在我的问题是,将该函数编译到共享库中进行分发是否安全?如果用户使用不同的编译器来编译他们的程序和链接,该函数是否仍会被正确调用?