當嘗試編譯具有多個頭檔的 C 程式時,可能會遇到錯誤「多重定義 [符號」 ]。 「當相同符號(例如函數或變數)在程式碼中定義多次時,就會出現此錯誤。
請考慮以下範例:
// complex.h #ifndef COMPLEX_H #define COMPLEX_H #include <iostream> class Complex { public: Complex(float Real, float Imaginary); float real() const { return m_Real; }; private: friend std::ostream& operator<<(std::ostream& o, const Complex& Cplx); float m_Real; float m_Imaginary; }; #endif // COMPLEX_H // complex.cpp #include "complex.h" Complex::Complex(float Real, float Imaginary) { m_Real = Real; m_Imaginary = Imaginary; }
// operator.cpp #include "complex.h" std::ostream& operator<<(std::ostream& o, const Complex& Cplx) { return o << Cplx.m_Real << " i" << Cplx.m_Imaginary; }
// main.cpp #include "complex.h" #include <iostream> int main() { Complex Foo(3.4, 4.5); std::cout << Foo << "\n"; return 0; }
編譯此程式碼將導致上述錯誤。中的定義不是內聯的。式內聯的,非成員函數如operator
行動運算子以上是為什麼在頭檔中定義函數會導致 C 中的「多重定義」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!