gpt4 book ai didi

c - 在 C 中此处未声明(不在函数中)

转载 作者:行者123 更新时间:2023-11-30 20:57:50 27 4
gpt4 key购买 nike

我是c语言新手,但我试图理解这个用c语言编写的夸克哈希算法,我在编译源代码时发现了一个错误,根据我对它已经声明的宽度的理解,但为什么是还是错误?

这是源代码

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>

/* uncomment to printf execution traces */
// #define DEBUG

#if defined(UQUARK)
#define CAPACITY 16
#define RATE 1
#define WIDTH 17
#elif defined(DQUARK)
#define CAPACITY 20
#define RATE 2
#define WIDTH 22
#endif


#define DIGEST WIDTH

typedef uint64_t u64;
typedef uint32_t u32;
typedef uint8_t u8;

typedef struct {
int pos; /* number of bytes read into x from current block */
// u32 x[ WIDTH*8 ]; /* one bit stored in each word */
u32 x[ WIDTH*8 ]; /* one bit stored in each word */
} hashState;


#if defined(UQUARK)
/* 17 bytes */
u8 iv[] = {0xd8,0xda,0xca,0x44,0x41,0x4a,0x09,0x97,
0x19,0xc8,0x0a,0xa3,0xaf,0x06,0x56,0x44,0xdb};

并显示此错误

quark.c:36:10: error : 'WIDTH' undeclared here (not in a function)
u32 x[WIDTH*8];

最佳答案

我猜由于某种原因,UQUARK 和 DQUARK 都没有被定义。

添加此:

#if defined(UQUARK) && defined(DQUARK)
#error both UQUARK and DQUARK are defined
#endif

#if !defined(UQUARK) && !defined(dQUARK)
#error Neither UQUARK nor DQUARK are defined
#endif

就在以下行之前:

#if   defined(UQUARK)

如果 UQUARKDQUARK 都被定义(这可能没有意义),或者 UQUARKDQUARK 已定义(这可能发生在您的情况下)。

现在的问题是:谁定义了 UQUARK 和/或 DQUARK?只有你自己才能知道。

关于c - 在 C 中此处未声明(不在函数中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56142066/

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