У меня возникла проблема с инициализацией массива структур в моей программе на 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. Я не знаю, почему эта линия является проблемой. Есть идеи?
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++;
}
Вы также используете WAY слишком много глобальных переменных. Этот материал полностью устарел. – Puppy
Ошибка может не отображаться на линии 129. Возможно, вы пропустите что-то рядом с этой линией. – arifwn
У вас есть другой тип, называемый 'SatCounterTable'? Он должен быть распознан компилятором как выражение, поскольку он является (глобальной) переменной. –