我在 MSVC 2012 上运行了一段代码:
#include <windows.h>
#include <intrin.h>
UINT64 gettime() {
try {
unsigned int ui;
return __rdtscp(&ui);
}
catch (...) {
return __rdtsc();
}
}
我试图使用 __rdtscp() 来获取时间戳;但是,在不支持 __rdtscp() 的平台上,我想改用 __rdtsc() 。
上面的代码不起作用;如果不支持 __rdtscp()(在某些 VM 上),程序就会崩溃。那么有什么方法可以检测 __rdtscp() 是否受支持,但不会导致程序崩溃?