「只在頭文件中放置一個聲明」的答案是正確的,但也值得知道,您可以避免使用單獨的源文件進行定義,並將相應的.o
文件連接起來,方法是將其放入頭文件:
inline int RandomRange(int min, int max)
{
int newValue = (rand() % max) + min;
// etc...
}
這是簡單的,但同時也意味着,包括文件的每個源文件將必須處理完整定義時,它的編制,也使得包括本文件中的每個源文件將必須處理<cstdlib>
,該文件需要包含以便撥打rand()
。
對於像<cstdlib>
那樣基本的小函數和頭文件,過早地進行優化是擔心編譯時間對整個構建的影響,儘管在更改頭文件時會明顯影響部分構建。也有功能性的一些問題,雖然 - 如果你這樣做,那麼:
(a)在使用這個頭文件和鏈接必須使用RandomRange
相同的定義共同目標文件,所以更改的內容函數體打破鏈接兼容性。預處理後的完全相同 - 本例中沒有使用宏,因此無論哪種方式都是一樣的,但可能會在這裏出錯。 (b)僅通過鏈接包含不同定義(用於調試,測試或鏈接時應用程序可配置性)的不同對象文件,不能替換RandomRange
的定義。
對於小功能和小項目,這些缺點通常不是問題。對於大型函數和大型項目,通常至少有一些是,這就是爲什麼標準安全的事情是有單獨的聲明和定義。