是有可能使類似一輪包括用C? example: in ial.h - #include "adt.h" and in adt.h - #include "ial.h"
回合包括頭文件使用C
2
A
回答
5
這就是所謂的循環依賴,雖然這是可能的,你不應該。不惜一切代價避免圍繞這個概念進行設計。
你應該做的是從兩個頭提取共同點,創建第三個,這兩個include
。
bad good
a <---> b a b
| |
-> c <-
如果你發現你不能做到這一點,那麼最有可能a
和b
是相同的語義單位,並在相同的標題歸屬。
3
很顯然,如果你這樣做,並沒有其他人做任何事情,你有一個無限長的文件作爲循環依賴保持包括其組成部分。
但很多人包括許多在C文件的,所以這樣的事情一定會發生。
輸入include guards。在每個(精心設計的)頭文件中,都必須有一種方法來確保你打破循環依賴。最常用的兩種方法使用不同的預編譯器宏:對於接受此操作的編譯器(現在大多數編譯器),它確保每個編譯僅包含一次頭文件。把它放在每個標題的頂部,你就可以。
的ifdef - 這樣的事情
#if !defined(__MY_HEADER_H__)
#define __MY_HEADER_H__
/* all the code */
#endif
你會看到包括在任何標準的頭警衛。
我喜歡uʍopǝpısdn的回答,但 - 如果它是您的代碼,盡你所能避免創建這種依賴關係。
0
我猜你應該能夠做到這一點,通過使用#ifndef
:
在ial.h
:
#ifndef IAL_H
#define IAL_H
...
#include "adt.h"
...
#endif
在adt.h
:
#ifndef ADT_H
#define ADT_H
...
#include "ial.h"
...
#endif
無論它是一個好主意或沒有,我會說不要這樣做。
相關問題
- 1. C++頭文件和包括
- 2. 包括頭文件C++
- 3. make文件:頭包括另一頭C++
- 4. 包括頭文件
- 5. 陰謀不包括C頭文件
- 6. 包括對方的C++頭文件
- 7. C++頭文件包括組織
- 8. C:包括源文件,而不是頭
- 9. C++什麼是頭文件包括使用CP_UTF8和調用WideCharToMultiByte
- 10. 圓C++頭包括
- 11. 圓C++頭包括
- 12. 包括模板頭文件
- 13. 混淆,包括頭文件
- 14. 包括DDK頭文件
- 15. 包括C/C++頭4
- 16. 包括頭部(STL)頭文件
- 17. 混合C/C++頭文件可以包含另一個混合頭文件嗎?
- 18. 基類包括.cpp文件頭文件
- 19. 在附加頭文件中包含頭文件包括路徑
- 20. C++靜態庫依賴項,頭包括頭文件
- 21. Eclipse C++包括來自我的源文件夾的頭文件
- 22. 包含C頭文件包含標準包含(不包括C++ 11)
- 23. C++ LNK2019當包括頭
- 24. C++包括插頭問題
- 25. HOWTO:條件包括頭文件
- 26. 包括文件使用JavaScript
- 27. C++ - #包括「文件名」
- 28. 聽不懂,包括頭文件
- 29. 包括模板類型的頭文件
- 30. 包括DLL中的Qt頭文件
是的。還有10個角色要去。 – zubergu