我曾经从一个以125 SPS的速率发送样本的ADC中捕获5秒的数据,这转换成一个5*125的数组。在我的代码中,这看起来像:

#define SPS 125
#define TIME 5

char Samples[SPS * TIME];

现在,我想捕获2.5秒的数据,并将ADC采样率提高到250 SPS。在代码中,它看起来像:
#define SPS 250
#define TIME 2.5

char Samples[SPS * TIME];

但如果我这样做,编译器会抛出一个错误:
#901 expression must have integral or enum type main.cpp line 59 C/C++ Problem

我能理解它在说什么。
但是,什么是克服这种情况的最佳方法?请记住SPS和时间定义的可用性。我的意思是我已经在整个项目的其他几个地方使用过它们,我希望继续使用它们。
请帮忙!

最佳答案

问题是,结果转换为浮点(或双精度),但数组的大小必须是整数类型最简单的解决方案是@CoolGuy建议的,您可以将其转换为int

#define SPS 125
#define TIME 2.5

char Samples[ (int)(SPS * TIME) ];

关于c - 使用#define定义数组大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29911663/

10-11 22:32