Объект структуры в заголовочном файле - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть файл keytab.h в котором объявлен стуктурный тип key, и определен массив keytab этого типа. С этим работают несколько функций, включаю инклудом keytab.h в файлы с функциями на что линкер выдает ошибку, что нашел множественно определенный символ: fatal error LNK1169: one or more multiply defined symbols found вот keytab.h :
#ifndef KEYTAB_H
#define KEYTAB_H
 
struct key {
    char *word;
    int count;
} keytab[] = {
    "auto", 0,
    "break", 0,
    "case", 0,
    "char", 0,
    "const", 0,
    "continue", 0,
    /* ... */
    "union", 0,
    "unsigned", 0,
    "void", 0,
    "volatile", 0,
    "while", 0
};
 
#endif
Решение проблемы уже нашел, функции работают с типом, а не с массивом, по этому в keytab.h оставил только обьявление структуры, а массив переместил в .c файл с main, но все же интересно почему линкер выдавал ошибку ?

Решение задачи: «Объект структуры в заголовочном файле»

textual
Листинг программы
#include "keytab.h"
void f2 () {
 keytab[1].count= 35;
}

Оцени полезность:

6   голосов , оценка 4.333 из 5
Похожие ответы