我想使用某個namespace
及其功能,以多種形式使用它們以具有各種共享功能。但是,我有鏈接器問題。在多個VCL模塊中使用命名空間
這裏是我做過什麼 - 我創建了一個新的單位和它裏面我的頭文件中寫道:
#ifndef MyHeaderH
#define MyHeaderH
namespace MyHeader
{
enum { SOMETHING1, SOMETHING2 };
void SomeFunction(int Param);
}
#endif
當然,實際的功能在CPP文件中定義,上述是從h文件。
而且CPP文件如下:
#pragma hdrstop
#include "MyHeader.h"
#pragma package(smart_init)
void SomeFunction(int Param)
{
//some code here
}
所以在我的主要形式Form1
我包括上述HPP文件Form1
MyHeader::SomeFunction(0);
這一切編譯罰款鏈接器報告無法解析的外部。所以顯然它沒有看到名稱空間和函數。我如何解決這個問題?
作爲一個額外的問題 - 如果我用這樣的功能在幾種形式設置,它應該是所有編譯只有一次,右重用(它不會有我猜測的相同功能的多個副本?)
謝謝,我知道這是一些愚蠢的錯誤像那樣。在** cpp **文件中包含'MyHeader ::'之前的函數實現,現在編譯!那另一個問題呢 - 這個函數現在只在整個程序中編譯一次嗎? – Coder12345
@ Coder12345是的,因爲只有一個*定義*,所以只會有一個函數副本。 –