2017-05-24 57 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

相關問題