gpt4 book ai didi

c - 如何在预处理器时间内计算数组大小?

转载 作者:行者123 更新时间:2023-11-30 15:09:32 25 4
gpt4 key购买 nike

我想创建一个数组,其大小是通过定义在预处理器中计算出来的。当我尝试初始化此数组“内存”时,出现以下错误:

错误:表达式必须是整型常量表达式

这看起来让我觉得给出大小的表达式似乎是可变的,这很奇怪,因为它是根据定义计算的。请看下面的代码:

#define SAMPLE_FREQUENCY_HZ 48000
#define SAMPLE_INTERVAL_MS ((1.0 / SAMPLE_FREQUENCY_HZ) * 1000.0)
#define MAX_DELAYLINE_LENGHT_MS 250
#define MAX_DELAYLINE_LENGHT_ELEM (MAX_DELAYLINE_LENGHT_MS / SAMPLE_INTERVAL_MS)

typedef struct {
float delay;
int size;
// float *memory;
float memory[MAX_DELAYLINE_LENGHT_ELEM];
float *start;
float *end;
float *writePointer;
float *readPointer;
} delayline_t;

有人可以解释一下这个问题并给我一个解决方案,以一种需要的方式解决这个问题。谢谢!

最佳答案

MAX_DELAYLINE_LENGHT_ELEM 是 float / double ,但数组大小必须是整数。

它解析为:

(250 / (1.0 / 48000*1000.0)) =12222.0

但对于编译器来说它仍然是 double 。

关于c - 如何在预处理器时间内计算数组大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36623039/

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