我有以下代码片段,它是api(cdecl)的一部分.在MSVC++中,sizeof bool是1个字节,但由于bool是实现定义的,其他编译器/作者编译的一些程序错误地定义了函数签名,可能将bool视为> 1个字节,并且调用下面的检查可能会在程序的一侧返回true.
virtual bool isValid()
{
return false;
// ^ code above in asm: xor al, al
}
Run Code Online (Sandbox Code Playgroud)
为了避免这种情况,我xor eax, eax在返回之前放了一个内联asm - 但是我觉得它有点hacky,当然由于缺少内联汇编程序支持而无法在x64上运行.
使用#define bool int将工作,但它不是我想要的,因为我有在其中有bool数据类型的结构,并使用它将导致损坏.
有没有像内在函数可以归零eax/rax寄存器或任何可以解决这个问题的东西?