有一个名为"比较"的现有功能,即
int compare(void* A, void* B) { return (int)A - (int)B; }
Run Code Online (Sandbox Code Playgroud)
我知道这是一个残暴的做法,但我没有编写那段代码,而且它已经在许多地方使用了.但是这段代码在64位下产生了编译错误,因为void*不再是32位,所以我将代码修改为以下内容.
int compare(void* A, void* B) { return (long long)A - (long long)B; }
Run Code Online (Sandbox Code Playgroud)
在当前的64位Linux体系结构下,此函数返回错误结果的可能性有多大?也就是说,两个虚拟地址分开超过0x7FFFFFFF的可能性是多少?
我想你想要的
int compare(void* A, void* B) { return (A > B) - (A < B); }
Run Code Online (Sandbox Code Playgroud)