Windows API的所有参数和返回值sizeof均为4的原因?
仅仅是为了压栈方便?
反正C里面看不出来,在win32汇编中,sizeof相同带来的便利非常大
------解决方案--------------------压栈方便,内存对齐也方便
------解决方案--------------------找了下, fastcall , cdecl , intrinsic 啥的都不算, 几分钟还是找到不少 stdcall 的...
VerSetConditionMask RtlVerifyVersionInfo KeQueryInterruptTime KeQueryPerformanceCounter RtlFindRange
Int64ShllMod32 Int32x32To64 这些看着就应该传/返回64B的函数就不算了...
------解决方案--------------------
整形提升。
调用函数时,所有比int或unsigned int小的类型都要提升为int或unsigned int。
所以用byte,short不能节省栈,还增加了一次与操作(为了排除栈上的无用位的干扰),没有任何好处。
int64一般用不到这么大的范围。
所以int是最合适的。
也有例外,比如RegisterClass就返回ATOM。ATOM就是unsigned short。
还有GetFileSize,他把返回值低32位放eax,高32位放指定的内存,很是别扭。其实放在edx,eax中多好,正好线程一个int64。