2017-05-24 59 views
-1

我试图生成随机数,但这个种子使用`rdtsc`:错误C2065

int rdtsc()   
{ 
    __asm__ __volatile__("rdtsc"); 
} 

但是,当我尝试编译我得到这个错误:

error C2065: '__asm__' : identificador no declarado 
error C2146: error de sintaxis : falta ';' delante del identificador '__volatile__' 

做什么,我得做?是否有另一种方法来生成真正的随机数字,而不是通过time(null)

+2

我希望你正在尝试使用内联汇编在x64版本中,Visual Studio不支持(出于某种未知原因)。请注意,您无法生成“真正的”随机数字(没有某些硬件支持) - 您只能生成*伪随机*数字。 –

+1

在msdn.microsoft.com上使用random_device或查找rand_s。 – user515430

+2

这是gcc语法。如果你使用visual studio,那么它是'__asm rdtsc;' –

回答

3

64位版本的Visual C++不支持内联汇编,但它为做了为大多数特殊指令提供了内置函数,like rdtsc

所以没有必要自己编写代码。


即使你使用的是32位编译器,汇编语法不

__asm__ __volatile__("rdtsc"); 

只是

__asm rdtsc 
+0

非常感谢:) – Deivbid

相关问题