作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
#include "main.h"
unsigned char currentBar;
struct foo myFoo[getNumBars()];
void initMyFoo(void)
{
currentBar=(getNumBars()-1);
for(i=0; i<(sizeof(myFoo)/sizeof(myFoo[0])); i++)
{
myFoo[i].we = 1;
myFoo[i].want = 0;
myFoo[i].your = 0;
myFoo[i].soul = 0;
}
}
#include "foo.h"
unsigned char getNumBars()
{
return getDipSwitchValues();
}
initMyFoo();
(struct foo 在 foo.h 中声明。)
此代码必须在不对条形码进行硬编码的情况下执行,因为条形码的数量将根据用户设置的 DIP 开关而变化。现在我无法初始化 myFoo;我收到错误“初始化程序中预期的常量表达式”。我是否必须像这样初始化它:
struct foo myFoo[];
然后再改?如果是这样,如何使 myFoo[] 的长度正确?我显然没有对应于所需大小的可用常量。我需要动态分配这个还是什么?
我找到了类似的答案,但对我帮助不大 - C++ a class with an array of structs, without knowing how large an array I need
最佳答案
struct foo* myFoo;
unsigned int myFooSize;
void initMyFoo(void)
{
myFooSize = getNumBars();
myFoo = malloc(myFooSize * sizeof(*myFoo));
for (i=0; i<myFooSize; i++) {
/* ... */
}
}
void cleanupMyFoo(void)
{
free(myFoo);
myFoo = NULL;
myFooSize = 0;
}
关于c - 当长度直到运行时才知道时,如何在 C 中声明和初始化这个结构数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4338919/
我是一名优秀的程序员,十分优秀!