我声明了mpz变量并在void函数中初始化它们。
它不起作用。
例如:
mpz_t a;
init();
...
void init(){
mpz_init(a);
....
}
没有错误。
init();
...
void init(){
mpz_t a;
mpz_init(a);
}
发生错误。
答案 0 :(得分:0)
从您的一小部分代码中,差异似乎是变量a
的范围。在仅具有局部范围的变量(在mpz_init(a)
函数内)调用init()
有什么意义? init()
返回后,a
消失。如果您以后需要其他任何内容,变量a
,以及可能是mpz_init()
的一些副作用,都不会存在。如果您希望mpz_init()
的副作用持续超过init()
的结尾,则必须对某些结构生效,该结构也会持续超过init()
的结尾。在您的第一个示例中,a
声明为全局范围,因此它会在整个程序中保留。