一、extern void的作用
extern void demoFunction();
從代碼片段中可看出,extern void用於聲明一個函數demoFunction(),它沒有參數,也沒有返回值。具體實現可在本文件中或其他文件中找到。extern表示該函數會在其他文件中定義,而不是在該聲明文件中定義。void表示該函數沒有返回值,即不返回任何值。
extern void通常與頭文件一起使用,使得在不同文件中調用函數成為了可能。這是因為在C或C++中,每個源文件都必須存為獨立的編譯單元。這意味著如果要在不同的源文件中調用同一個函數,我們需要在每個文件中聲明它。我們可以將這個聲明放在一個頭文件中,而在需要使用函數的文件中包含這個頭文件。
例如,在test.c中定義函數check(),在main.c中需要調用它,則應該在test.h頭文件中聲明check()函數:
/* test.h */ #ifndef _TEST_H_ #define _TEST_H_ extern void check(); #endif /* _TEST_H_ */
二、extern void的用法
使用extern void聲明函數時,我們不需要在聲明中給出函數實現的具體細節。這部分應該留給其他文件中的定義操作來完成。因此,我們通常使用extern在頭文件中聲明函數。
下面是一個使用extern void的代碼示例:
/* test.h */ #ifndef _TEST_H_ #define _TEST_H_ extern void check(int num); #endif /* _TEST_H_ */ /* test.c */ #include "test.h" void check(int num) { printf("num is %d\n", num); } /* main.c */ #include "test.h" int main() { check(3); return 0; }
在以上示例中,我們定義了一個名為check()的函數,在test.h頭文件中使用extern void聲明。我們在test.c中實現check()函數的具體操作。在main.c中使用了check()函數。
三、extern void的注意事項
雖然extern void聲明了函數,但它並沒有定義該函數。定義函數應該在另一個文件中進行,或在當前文件中提供函數實現。在任何情況下,函數的所有聲明必須保持一致。
另外,在使用extern void聲明函數時,必須確保作為參數傳遞給函數的類型與函數實現中的參數類型匹配。否則,可能會導致程序在編譯時或運行時崩潰。
最後,需要注意的是,extern void對於定義變數的作用域也有影響。當我們在一個函數中定義了一個全局變數時,其他函數可以通過extern關鍵字來訪問這個變數。
四、小結
在C或C++中,使用extern void是通過聲明函數,使得其他文件可以使用該函數。函數的具體實現應該留給定義操作來完成。在使用extern void聲明函數時,必須注意函數參數類型與函數實現的一致性,並且全局變數的作用域也會受到影響。在使用extern void時應該注意以上幾點。
原創文章,作者:XSDFC,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/333673.html