У меня проблема с инициализацией массива структур в моей 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. Я не уверен, почему эта строка является проблемой. Есть идеи?
EDIT:
Вот несколько дополнительных строк кода вокруг функции
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++;
}