簡體   English   中英

如果我在標題中有一個include語句,我是否需要將它放在源代碼中?

[英]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 ,你會有iostreamfile.cpp

file.h

#include <iostream>
...

file.cpp

#include "file.h"

// iostream definitions are available.

但請記住鏈接問題的教訓:當標題本身需要導入的定義時,只在頭文件中使用#include

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM