gpt4 book ai didi

c - "Unknown Type Name N"错误,即使 N 被定义为常量

转载 作者:太空宇宙 更新时间:2023-11-04 01:49:57 25 4
gpt4 key购买 nike

我正在尝试编译下面的代码,但在读取 void assert (n%64==0 && l%64 == 0); 的行中遇到了两个错误。一个错误显示“未知类型名称‘n’”,另一个错误显示“预期的‘)’”。这些对我来说都没有意义,因为没有未闭合的左括号,并且我在上面用 const unsigned n = 2048; 行定义了“n”。

我应该指出,这段代码来自 Daniela Frauchiger、Renato Renner 和 Matthias Troyer 在 2013 年发表的一篇论文;可在 https://arxiv.org/pdf/1311.4547.pdf 找到.它是与硬件随机数生成器一起使用的随机提取器的一部分。代码不是我的,但我正在努力使其适应我正在从事的项目。

const unsigned n = 2048; // CHANGE to the number of input bits, must be multiple of 64
const unsigned l = 1792; // CHANGE to the number of output bits, must be multiple of 64

// the extraction function
// parameters:
// y: an output array of l bits stored as l/64 64−bit integers
// m: a random matrix of l∗n bits , stored in l∗n/64 64−bit integers
// x: an input array of n bits stores as n/64 64−bit integers

void extract (uint64_t * y , uint64_t const * m, uint64_t const * x)
{
void assert (n%64==0 && l%64 == 0);

int ind=0;
// perform a matrix−vector multiplication by looping over all rows
// the outer loop over all words
for (int i = 0; i < l/64; ++i) {
y[i]=0;
// the inner loop over all bits in the word
for (unsigned j = 0; j < 64; ++j) {
uint64_t parity = m[ind++] & x[0];
// performs a vector multiplication using bit operations
for (unsigned l = 1; l < n/64; ++l)
parity ^= m[ind++] & x[l];
// finally obtain the bit parity
parity ^= parity >> 1;
parity ^= parity >> 2;
parity = (parity & 0x1111111111111111UL) * 0x1111111111111111UL;
// and set the j−th output bit of the i−th output word
y[i] |= ((parity >> 60) & 1) << j;
}
}
}

我是 C 的新手,所以如果这是一个愚蠢的问题,我深表歉意,但我无法从现有答案中回答。

最佳答案

void assert (n%64==0 && l%64 == 0); 试图声明一个函数 alled assert,但它在错误的地方。只需删除 void,现在您正在调用“调试函数”assert 来检查 nl 是否满足他们所需的约束。

void extract (uint64_t * y , uint64_t const * m, uint64_t const * x)
{
assert (n%64==0 && l%64 == 0);
...

关于c - "Unknown Type Name N"错误,即使 N 被定义为常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45558274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com