【发布时间】:2015-07-06 20:18:09
【问题描述】:
我曾经从一个以 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 和 TIME 定义的可用性的情况下,克服这种情况的最佳方法是什么。我的意思是我已经在项目的其他几个地方使用了它们,我希望继续使用它们。
请帮忙!
【问题讨论】:
-
也许演员会起作用。尝试将结果转换为
int -
以毫秒为单位定义时间。
-
另一种方式是为TIME定义单独的分子和分母,并声明
char Samples[SPS * TIME_NUM / TIME_DENOM]; -
问题是你有一个“混合表达式”:整数 * 浮点数;产生浮点数的最终表达式。正如 Cool Guy 和 Arun A.S 正确建议的那样,一种解决方案是将表达式“转换”为“int”。
标签: c arrays c-preprocessor