Почему MSVS отказывается компилировать следующее?C - MSVS 2013 «C2374:« имена »: переопределение, многократная инициализация» - почему?
config.h
char *names[][2] = {
{ "Marry", "McBlith" },
{ "Nadja", "Nurales"}
};
main.c
#include <Windows.h>
#include <stdio.h>
#include "config.h"
int main()
{
printf("TEST (names[0][0]): %s\n", names[0][0]);
return 0;
}
Выход:
1>c:\projects\test\config.h(2): error C2374: 'names' : redefinition; multiple initialization
1>c:\projects\test\config.h(2) : see declaration of 'names'
Список ошибок:
Error 1 error C2374: 'names' : redefinition; multiple initialization c:\projects\test\config.h 2 1 test
Почему МСВС 2013 сказать мне его многократную инициализацию, когда массив names[][2]
только объявляется и инициализируется один раз в config.h
?
Что я делаю неправильно и что мне нужно изменить, чтобы заставить это работать?
Привет
Не помещайте определения в файлы заголовков. Вероятно, вы включили этот файл в другой исходный файл и связали объект с вашей программой. – ouah
Вы пропускаете '#pragma once' в верхней части вашего' config.h'? Лучше поместить это в файл кода, а не в заголовок. –
Да, я включаю этот файл в другой исходный файл. Однако я попытаюсь поместить его в файл кода. – phew