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

ではありません(何らかの未知の理由で)Visual Studioがサポートしていないx64ビルドでは、 "真の"乱数を生成することはできません(ハードウェアのサポートなし)。疑似乱数のみを生成することができます。 –

+1

msdn.microsoft.comでrandom_deviceまたはlookup rand_sを使用します。 – user515430

+2

これはgcc構文です。 visual studioを使用している場合は、 '__asm rdtsc; 'です。 –

答えて

3

Visual C++の64ビットバージョンはインラインアセンブリをサポートしていませんが、でほとんどの特別命令の組み込み関数であるlike rdtscを提供します。

そのコードを自分で書く必要はありません。


そして、あなたは、32ビットコンパイラを使用している場合でも、アセンブリの構文は、私はあなたがインラインアセンブリを使用しようとしている期待

__asm__ __volatile__("rdtsc"); 

ちょうど

__asm rdtsc 
+0

ありがとう:) – Deivbid

関連する問題