是否可以調用a.cpp中定義的函數以在b.cpp中使用,而無需在任何頭文件中聲明a.cpp中的函數。在其他源文件中沒有公共頭文件訪問功能
0
A
回答
2
是的,雖然不值得推薦。
實際上,頭文件包含的內容實際上是將頭文件的內容放入源代碼的預處理程序發現#include
指令的確切位置。因此,而不是使用include指令,代碼可以手動在該位置寫的,程序是相同的:
頁眉:
://a.h
void foo();
//a.cpp
#include "a.h"
void foo() {
//do something
}
//b.cpp
#include "a.h"
void bar() {
foo();
}
預處理是一樣的後
//a.cpp
void foo();
void foo() {
//do something
}
//b.cpp
void foo();
void bar() {
foo();
}
因此,您可以省略標題並在需要調用它的任何地方手動聲明函數。然而,標題確保了整個項目中的聲明是相同的。例如。如果你改變foo
採取參數:
//a.h
void foo(int);
現在b.cpp
編譯器會告訴你,呼叫foo()
不匹配的聲明。如果你離開了頭和手動聲明它,而不是,如果你忘記改變b.cpp
聲明,編譯器將假設存在的foo
兩個版本,因爲你告訴他這樣:
//a.cpp
void foo(int); //version 1
void foo(int i) {
//do something
}
//b.cpp
void foo(); //oops. forgot to change that. compiler assumes a second version
void bar() {
foo(); //ok, try to call version 2...
}
這將編譯,然而,鏈接器會告訴你一些關於void foo()
的未定義參考的信息,在b.obj
中調用。
相關問題
- 1. 訪問公共頭文件的多個源文件和頭文件
- 2. 拒絕公共訪問文件夾,但仍可從其他php文件訪問
- 3. 從nodejs中的其他js文件訪問其他js功能
- 4. 如何訪問.as文件中的公共功能
- 5. 訪問Rails中的公共文件
- 6. jQuery插件:在其他公共方法中的訪問設置
- 7. 沒有源文件的頭文件
- 8. jQuery插件調用內部其他公共職能的公共功能
- 9. 其他頭文件
- 10. 我如何從其他JS文件訪問功能
- 11. 限制系統文件訪問公共
- 12. 在其他頭文件中包含頭文件中的類
- 13. 功能與在其他數據文件
- 14. MVN單元測試公共資源文件夾,並讀取文件的功能
- 15. C++訪問其他類公共成員
- 16. 訪問其他公共類的變量
- 17. 如何從Wind River Workbench中的其他DKM訪問頭文件?
- 18. 訪問其他功能
- 19. 包含所有其他頭文件的單頭文件?
- 20. 如何從其它文件訪問類的公共枚舉:C++
- 21. 引用公共頭中的私有頭文件
- 22. Html訪問公共文件夾以外的文件
- 23. 頭文件沒有看到其他頭標識符
- 24. 頭文件和其他庫
- 25. 是否有可能通過NSApplicationDelegate訪問其他文件
- 26. 如何訪問RStudio中的共享庫(.so)文件功能?
- 27. Rails和Phusion Passenger - 只能訪問公共文件夾
- 28. 從功能文件中使用變量的其他文件導入功能
- 29. 如何在C++(頭文件)中構建私有和公共API
- 30. 訪問變量文件從一個類中的其他文件
是的,你可以在b.cpp中放置函數的原型。但爲什麼? –
對不起,我的意思是你可以在使用前在'b.cpp'中聲明*函數。顯而易見的問題是「你想要解決什麼問題?」 – juanchopanza
感謝所有與原型定義我可以做到這一點,@JeremyWest它被建議我重用,而不是裝箱分離靜態,只是好奇是有可能沒有原型。 – Meluha