Несколько строк кода стоят тысячи слов:
У меня есть три простых файла: header.h, main.cpp, other.cpp
==== CODE BEGIN ====
// header.h
#pragma once
const void* p = 0;
// main.cpp
#include "header.h"
int main()
{
return 0;
}
// other.cpp
#include "header.h"
==== CODE END ====
При компиляции простейшего проекта VC++ 2010 жалуется на следующее:
ClCompile:
other.cpp
main.cpp
Generating Code...
other.obj : error LNK2005: "void const * const p" (?p@@3PBXB) already defined in main.obj
D:\Test\Debug\bug.exe : fatal error LNK1169: one or more multiply defined symbols found
Build FAILED.
Time Elapsed 00:00:00.29
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Я уверен, что это ошибка VC++ 2010 из-за следующих двух ссылок:
- #P5# <блочная цитата> #P6# блочная цитата>
- #P7# <блочная цитата> #P8# #P9# блочная цитата>