Вы пытаетесь написать код в глобальном масштабе. Вы не можете сделать это. Вам нужно либо дать вашей глобальной переменной статический инициализатор, либо инициализировать ее во время выполнения внутри вызова функции.
Пример статического инициализатора:
variable Table[VAR_SIZE] = {
{NULL, 0}, // index 0
{NULL, 0}, // index 1
// etc.
};
Инициализация во время выполнения:
variable Table[VAR_SIZE];
void init_table(void) {
Table[0].key = NULL;
Table[0].value = 0;
// etc.
}
int main(int argc, char **argv) {
init_table();
// rest of program
}
Если вы компилируете в режиме C99, вы также можете использовать обозначенный инициализатор :
// The following is valid C99, but invalid C89 and invalid C++
variable Table[VAR_SIZE] = {
[0] = { // initialize index 0
.key = NULL,
.value = 0
},
// etc.
};