爲什麼MSVS拒絕編譯以下內容?C-MSVS 2013「C2374:'names':重新定義,多重初始化」 - 爲什麼?
的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
爲什麼MSVS 2013告訴我它的倍數時初始化數組names[][2]
僅僅聲明和config.h
初始化一次?
我在做什麼錯誤,我必須改變什麼才能使它工作?
問候
不要將定義放在頭文件中。您可能將該文件包含在另一個源文件中,並將該對象與您的程序鏈接。 – ouah
你在'config.h'的頂部是否缺少'#pragma once'?最好把它放在代碼文件中而不是頭文件中。 –
是的,我將這個文件包含在另一個源文件中。我會嘗試把它放在代碼文件中。 – phew