相关疑难解决方法(0)

关于typedef中单实例数组的一些问题

我正在使用GNU Multi-Precision(GMP)库代码使用任意长度的整数来阅读一些代码.MP整数的类型mpz_t与gmp.h头文件中的定义相同.

但是,我对这个库定义mpz_t类型的低级定义有一些疑问.在标题代码中:

/* THIS IS FROM THE GNU MP LIBRARY gmp.h HEADER FILE */
typedef struct
{
    /* SOME OTHER STUFF HERE */
} __mpz_struct;

typedef __mpz_struct mpz_t[1];
Run Code Online (Sandbox Code Playgroud)

第一个问题:是否[1]__mpz_struct?换句话说,typedefmpz_t类型定义为__mpz_struct具有一次出现的数组?

第二个问题:为什么阵列?(为什么只出现一次?)这是我听说过的结构黑客之一吗?

第三个问题(可能与第二个问题间接相关):mpz_init_set(mpz_t, unsigned long int)函数的GMP文档说只使用它作为pass-by-value,尽管可以假设这个函数会在被调用函数中修改它的内容(因此需要pass-by-reference)语法.参考我的代码:

/* FROM MY CODE */
mpz_t fact_val;                /* declaration */
mpz_init_set_ui(fact_val, 1);  /* Initialize fact_val */
Run Code Online (Sandbox Code Playgroud)

单次出现数组是否允许自动传递引用(由于C中数组/指针语义的崩溃)?我很自然地承认我有点过分分析这个,但我当然喜欢对此进行任何讨论.谢谢!

c arrays struct typedef gmp

8
推荐指数
2
解决办法
815
查看次数

标签 统计

arrays ×1

c ×1

gmp ×1

struct ×1

typedef ×1