【发布时间】:2017-10-24 10:17:05
【问题描述】:
我正在尝试使用这个种子生成随机数
int rdtsc()
{
__asm__ __volatile__("rdtsc");
}
但是当我尝试编译时,我得到了这个错误:
error C2065: '__asm__' : identificador no declarado
error C2146: error de sintaxis : falta ';' delante del identificador '__volatile__'
我该怎么办?除了time(null),还有其他方法可以生成真正的随机数吗?
【问题讨论】:
-
我希望您尝试在 x64 构建中使用内联汇编,而 Visual Studio 不支持(出于某种未知原因)。请注意,您无法生成“真正的”随机数(没有一些硬件支持) - 您只能生成 pseudo-random 数。
-
使用 random_device 或在 msdn.microsoft.com 上查找 rand_s。
-
那是 gcc 语法。如果你使用visual studio,那么它是`__asm rdtsc;`
-
请不要使用
random标签,rdtsc与随机性无关。 -
即使使用可以编译它的编译器 (gcc/clang/ICC),该 asm 也不安全。您需要输出操作数。
标签: c++ windows visual-studio inline-assembly