ich einige Konstanten inC++ mehrere Definition mit konst Verknüpfung Fehler deklariert in .h
Constanst.h
#ifndef __CONSTANTS_H__
#define __CONSTANTS_H__
namespace A{
namespace B{
const int FIRST = 1;
const int SECOND = 2;
}
}
#endif
ich diese Datei bin auch aus 2 verschiedenen CPP definiert bin mit (A.cpp und B.cpp)
gcc Version 3.2.3 gibt mir "multiple Definition" Verknüpfungsfehler
ich löse das Problem nur durch einen anderen "file.h" einschließlich der "constants.h" und Decla umfasst res die gleichen Konstanten wie "extern"
Kann jemand erklären warum? Ich sollte dies ein Problem war in C, C++ nicht
hinzufügen Header Wächter oder #pragma einmal – Sugar
@Sugar Ich denke, das würde nicht helfen. – Danh
Welcher Art sind diese Konstanten? Wenn Sie Variablen in einer Headerdatei deklarieren, werden sie in jeder Kompilierungseinheit, die diesen Header enthält, instanziiert. Es gibt eine Reihe von Möglichkeiten, aber normalerweise, wenn Leute die Variablen (konstant oder nicht) in einem Header deklarieren, definieren sie _ sie in einer .c Datei. Ihr 'extern' verspricht nur dem Compiler, dass die Variablen an anderer Stelle definiert sind, und der Linker erwartet, dass sie irgendwo unter den kompilierten Objekten zu finden sind. –