我正在使用C語言並修改以前由其他人編寫的代碼。我正在努力處理一些事情,我儘可能地瞭解我所能做的事情。所以,正如我的問題所述,創建函數時static inline void
和void
之間有什麼區別?我爲這篇長文章事先道歉,但我想讓你知道我做了一些研究,但不明白我發現了什麼。靜態內聯void和void之間有什麼區別?
我發現an explanation of static
是混淆了我:
static聲明表示該功能不能被引用的其他文件 ;也就是說,鏈接器不會導出該名稱。
通過閱讀本文,我假設引用函數不同於調用函數?我假設因爲這個函數是從另一個.c文件中調用的。如果是這樣的話,什麼是引用一個函數?
通過相同的網站,他們解釋inline functions,我不明白這是什麼意思。
__inline關鍵字告訴編譯器用 內的代碼替換每個函數調用實例的函數定義。 但是,替換隻能由編譯器自行決定。例如,對於 示例,如果編譯器的地址是 ,或者它太大而不能內聯,則編譯器不會內聯函數。
呃???
任何幫助非常感謝,我再次爲這個非常長的帖子道歉。
位於file1.c中(使用通用名稱,因爲我不認爲它很重要)以下
COMPLEX cNoiseSample;
CGauss(&cNoiseSample, loopbackRadio->pState);
位於file2.c中
static inline void CGauss(COMPLEX * pcGauss, P_OS_UNIFORM_RAND_STATE pState)
{
//code
}
另外,'inline'對於在包含在不同編譯單元中的頭文件中定義一個函數時強制執行一個定義規則是必要的(或者至少對於C++來說是這樣,不完全知道C中的這個細節,I想象它會是一樣的) – rubenvb
嗯,我想我比@ Graham-Borland有點困惑。讓我告訴你爲什麼:COMPLEX cNoiseSample; CGauss(&cNoiseSample,loopbackRadio-> pState);/*這段代碼在.c源文件中的一個點處調用,而在另一個.c源文件中調用。我有這個:*/static inline void CGauss(COMPLEX * pcGauss,P_OS_UNIFORM_RAND_STATE pState)/ *我爲糟糕的格式化道歉在評論框中,不知道該怎麼做。*/ – TZPike05
編輯你的問題,粘貼那裏的代碼片段。 –