0

GMP を使用するコードをコンパイルしようとすると、このエラーが発生しました。これを解決する方法はありますか?Visual Studio 2010 コマンド プロンプトを使用してコンパイルしていますが、これは私が使用したコマンドです。

cl testing.c gmp.lib

int main(void)
{
    mpz_t a,b;
    mpz_init(b);
    mpz_init(a);
    gmp_randstate_t rstate; // the problem arises when declaring this
}

testing.c
testing.c(9) : error C2275: 'gmp_randstate_t' : illegal use of this type as an e
xpression
        c:\cygwin\home\administrator\ss\gmp.h(252) : see declaration of 'gmp_ran
dstate_t'
testing.c(9) : error C2146: syntax error : missing ';' before identifier 'state'

testing.c(9) : error C2065: 'state' : undeclared identifier
testing.c(11) : error C2065: 'state' : undeclared identifier
testing.c(11) : warning C4047: 'function' : '__gmp_randstate_struct *' differs i
n levels of indirection from 'int'
testing.c(11) : warning C4024: '__gmp_randinit_default' : different types for fo
rmal and actual parameter 1
testing.c(13) : error C2065: 'state' : undeclared identifier
testing.c(13) : warning C4047: 'function' : '__gmp_randstate_struct *' differs i
n levels of indirection from 'int'
testing.c(13) : warning C4024: '__gmpz_urandomb' : different types for formal an
d actual parameter 2
testing.c(14) : error C2065: 'state' : undeclared identifier
testing.c(14) : warning C4047: 'function' : '__gmp_randstate_struct *' differs i
n levels of indirection from 'int'
testing.c(14) : warning C4024: '__gmpz_urandomb' : different types for formal an
d actual parameter 2
4

1 に答える 1

0

初期化するのを忘れただけです。

「そのような変数は、gmp_randinit 関数の 1 つを呼び出して初期化する必要があり、gmp_randseed 関数の 1 つを使用してシードできます。」- マニュアル pg 65。

于 2013-08-03T19:25:05.473 に答える