![](/img/trans.png)
[英]If a particular header already included in stdafx.h - do I need to (have to/should to) to explicitly include it in a .cpp file?
[英]If I have an include statement in header, do I need to put it in source?
要進一步提出從何處放置包含語句,標題或來源的問題? :
如果我在標題中已經有一個include語句,例如#include,我還需要把它放在源文件中嗎? 我能夠在兩個文件中使用#include進行編譯,當我從源文件中刪除#include時就可以了。
那么哪個更合適,還是真的不重要?
如果您的第一個包含文件依賴於第二個 - 例如,第一個包含文件引用類或第二個類型的typedef - 將第二個包含在第一個包含中。 如果他們是獨立的。 包含源文件。
為避免文件被包含兩次時出現問題,人們經常會這樣做
#ifndef INCLUDE_FILE_NAME_INCLUDED
#define INCLUDE_FILE_NAME_INCLUDED
.......
#endif
在包含文件的開頭/結尾,所以即使包含兩次,也會在第二次定義INCLUDE_FILE_NAME_INCLUDED,並且文件不會被評估兩次。
簡短的回答:只把它放在你必須的地方。
如果你可以在沒有#include
指令的情況下進行編譯,那就去做吧。
否則,如果只能在源文件中使用它進行編譯,請執行此操作。
否則,您必須將其放在標題中,但也不要將其放在源文件中。
更喜歡將其放在源文件而不是標頭中的原因是為了不在#include標頭的其他文件中創建不必要的依賴。
#include
cascades。 所以,如果你#include <iostream>
在file.h
,然后#include "file.h"
在file.cpp
,你會有iostream
在file.cpp
。
#include <iostream>
...
#include "file.h"
// iostream definitions are available.
但請記住鏈接問題的教訓:當標題本身需要導入的定義時,只在頭文件中使用#include
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.