我在初始化C程序中的结构数组时遇到问题。在此处,它被初始化函数:C动态数组初始化问题
void InitializeBPStructures() {
SatCounterTable = (struct SatCounterTableEntry *)malloc(sizeof(struct SatCounterTableEntry) * Counter_Count);
}
Counter_Count
是一个整数全局变量和SatCounterTable
较早的C源文件中声明为
static struct SatCounterTableEntry* SatCounterTable;
,如果它是有关这是我SatCounterTable struct
struct SatCounterTableEntry {
enum SatCounter_State Predict_State;
md_addr_t tag;
};
md_addr_t
只是unsigned int
的标签,对应于存储器地址
的问题是,当我尝试编译,我得到以下错误
sim-safe.c:129: error: expected expression before ‘=’ token
在我IntitializeBPStructures()
上线129的数组初始化我不知道为什么这条线是一个问题。有任何想法吗?
编辑:
下面是一些代码其他行绕功能
struct SatCounterTableEntry
{
enum SatCounter_State Predict_State;
md_addr_t tag;
};
/* simulated registers */
static struct regs_t regs;
/* simulated memory */
static struct mem_t *mem = NULL;
/* track number of refs */
static counter_t sim_num_refs = 0;
/* maximum number of inst's to execute */
static unsigned int max_insts;
static struct SatCounterTableEntry* SatCounterTable;
void InitializeBPStructures()
{
SatCounterTable = (struct SatCounterTableEntry *)malloc(sizeof(struct SatCounterTableEntry) * Counter_Count);
}
void BranchPredict(md_addr_t PC, md_addr_t nextPC, enum Branch_Result result)
{
if (result == N)
sim_num_mispred_static++;
if (result != (myrand() % 2))
sim_num_mispred_random++;
sim_num_br++;
}
你也使用WAY太多的全局变量。这些东西完全不赞成。 – Puppy 2010-11-16 19:04:34
错误可能不在第129行。您可能会错过某条线附近的某处。 – arifwn 2010-11-16 19:09:28
你有另一种类型定义为“SatCounterTable”吗?它应该被编译器认为是一个表达式,因为它是一个(全局)变量。 – 2010-11-16 19:09:52