→ rebaudiana:__FILE_B__ 05/25 23:45
※ 引述《suhorng ( )》之銘言:
: 想請問如下的問題有沒有解法:
: B 檔案是函式庫
: A 檔案是另一函式庫,會引入 B 檔案 A <===include=== B
: | \____________ |
: v > v
: C D
: 有的 client 會引入 A, 也需要用 B (並引入 B), 有的只要用 A, 不要用 B
: 為了讓 dependency 明顯一點, 我希望一個要用到 A & B 的 client 必須
: 同時 include A 跟 B, 只 include A 會 compile error
: (這樣做是, 例如將來我把某些 B 的功能移到另外的 Z 去時, 能明白知道哪些檔案該改)
: 原先的想法是在 A 中我寫成
: namespace private_A {
: #include "B"
: };
: 不幸的是因為 include guards, 我無法再引入 B
: 請問有其他解決辦法嗎?
一般情況 直接在A 中include B
C D include A 就好
現在原PO想要 只include A的時候 error 有AB的時候正常
或許可以考慮改CD的include的方式
在A中 include B
在B中 #ifndef FILE_B
#define FILE_B
#endif
在CD中 先include B
#ifdef FILE_B
include A
#endif
如果這樣寫 當你CDE沒有先include B 的話 A也不會被include
應該就會造成error
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.115.142.236