我需要经常初始化一个修复大小的数组,如下所示:
for( uint16_t q=0; q<SIZE; q++ )
array[q]=value;
数组定义为float array[SIZE];
有没有更好的方法可以做到这一点,取而代之的是宏观或类似的?
P.S。
不允许使用mem___
来电。
答案 0 :(得分:0)
C没有内置的方法将整个数组初始化为某个非零值。
如果您使用GCC,则其扩展名为Designated Initializers。您可以像使用它一样使用它:
float widths[] = { [0 ... 99] = 3.14 };
这会将所有元素设置为3.14
。
答案 1 :(得分:0)
使用预处理器,您可以这样做:
#define NMEMBERS(x) (sizeof(x)/sizeof(*(x)))
#define ARRSET(arr, val) \
do { \
size_t i; \
for (i = 0; i < NMEMBERS(arr); ++i) \
(arr)[i] = val; \
} while (0)
float array[SIZE], val = 0.67f;
ARRSET(array, val);