我想把一個c程序分解成兩個不同的文件。我正在使用靜態函數,我想知道這將如何影響我轉換到兩個文件。我希望我的所有功能都在一個文件中,而所有的功能都在另一個文件中。我需要做什麼來使用靜態函數是兩個不同的文件?多個文件中的靜態函數
回答
C中靜態函數的鏈接只在一個文件中,所以你可以調用不同源文件中的靜態函數。 所以,你可能需要這個
在交流轉換器,其會調用函數吧
int bar(); /*declaration the function type*/
void foo(){bar();} /* just call it*/
靜態
int bar(){return 1;}
INT b.c指無形的其他文件。請學習基礎知識。
我認爲這就是我在做的事 – user124249 2014-12-04 06:11:02
C中的靜態函數和C++中的靜態成員函數之間有很大的區別。在C中,一個靜態函數在其翻譯單元之外是不可見的,這是它被編譯到的目標文件。換句話說,製作一個靜態函數限制了它的範圍。你可以將一個靜態函數想象爲對它的* .c文件「私有」(儘管這不是嚴格正確的)。 – user124249 2014-12-04 06:19:15
在C++中,「static」適用於類的成員函數和數據成員。靜態數據成員也稱爲「類變量」,而非靜態數據成員是「實例變量」。這是Smalltalk術語。這意味着只有一個靜態數據成員的副本由一個類的所有對象共享,而每個對象都有自己的非靜態數據成員副本。所以一個靜態數據成員本質上是一個全局變量,它是一個類的成員。 – user124249 2014-12-04 06:19:35
最健壯的解決方案是首先在頭文件中聲明'全局可見'函數,然後將此頭文件包含在定義或引用該函數的所有函數中。
app.h:
#ifndef _APP_H //why this? left as an excercise for the reader ;-)
#define _APP_H
...
//declare fun()
extern int fun(char * strArg);
...
#endif
def.c:
#include "app.h"
//define fun()
int fun(char * strArg)
{
....
}
ref.c:
#include "app.h"
....
//reference fun()
int ret = fun("this is a test");
....
==========
通過這種方式,您可以確保對fun()的所有引用正確調用它。 如果您碰巧以任何方式更改fun(),或者錯誤地調用它, 編譯器會告訴您需要完成所有更改/修復的位置。
在任何情況下,如果您想要在特定源文件之外顯示任何內容,最好不要使用「靜態」屬性。 ,因爲靜態屬性的目的是使任何靜態不可見的源文件外部。
========
- 1. 靜態函數在另一個文件
- 2. 多個數組,私有靜態函數
- 3. 靜態函數導致更多的靜態函數
- 4. 靜態函數中的靜態變量?
- 5. 靜態函數和多線程中的C++靜態成員
- 6. 靜態函數靜態函數
- 7. C++ -using文件範圍靜態函數
- 8. 獲取靜態函數中的控件
- 9. 如何從另一個靜態函數調用靜態函數
- 10. 調用一個靜態子類中的非靜態函數php
- 11. 靜態函數中的DialogBox
- 12. c中的靜態函數
- 13. 「......」一個C靜態函數
- 14. 靜態函數
- 15. 靜態函數
- 16. 鏈接到Expressjs中的靜態文件中的靜態文件
- 17. 具有多個.h和.cu文件的靜態庫無法解析函數
- 18. 作爲xaml中的事件處理函數的靜態函數
- 19. 在同一個文件中的另一個幫助函數中的類中調用靜態函數
- 20. 共享對象中的靜態庫中的靜態函數
- 21. C/C++:頭文件中的靜態函數,是什麼意思?
- 22. 其他文件中的靜態函數訪問
- 23. C++鏈接器錯誤與.hpp文件中的靜態函數
- 24. 比較非靜態函數中的靜態和非靜態整數
- 25. 靜態函數中的非靜態參數
- 26. 頭文件中的靜態數組 - C++
- 27. Integer.valueOf()靜態函數
- 28. DLL靜態函數
- 29. php靜態函數
- 30. 靜態函數swift
您是否考慮過不使用靜態函數? – 2014-12-04 01:32:56
靜態函數具有「內部鏈接」 - 它們保留在它們聲明的文件中。您可以在多個文件中定義相同的靜態函數,但更好的解決方案取決於問題的細節。 – Praxeolitic 2014-12-04 01:33:05
似乎沒有人提到過,在將C文件包括到另一個C文件中沒有任何問題。我這樣做是爲了在特定環境下保持靜態功能,同時保持文件大小的可管理性。 (如果你不喜歡這個,那麼這是一個宗教論證,而不是編程問題。) – carveone 2015-07-12 11:26:41