Q
非原型函數聲明
4
A
回答
3
A 函數聲明可能會/可能會不包括函數參數。
雖然功能原型必須包括函數參數。
從Wikipedia:
考慮下面的函數原型:
int fac(int n);
該原型規定,在這個程序中,有一個名爲fac
函數,它接受一個整數參數n
和返回一個整數。在程序的其他地方,如果希望使用此功能,則必須提供函數定義。
請務必注意,函數的聲明不需要包含原型。以下是一個無原型函數聲明,它只聲明函數名稱及其返回類型,但不指出定義所期望的參數類型。
int fac();
3
原型是聲明,但聲明並不總是原型。如果你沒有指定參數,那麼這只是一個聲明而不是一個原型。這意味着編譯器不會拒絕對該函數的調用,抱怨它沒有被聲明,但將無法檢查傳遞的參數是否正確(如果您有原型)。
0
函數原型是一個函數聲明,用於指定參數的數量和類型。
T foo(); // non-prototype declaration
T foo(int, char *); // prototype declaration
T foo(int a, char *b); // prototype declaration
0
原型告訴編譯器哎有看起來像這樣的功能,這是它的名字int getanint()
。當你使用這個函數時,編譯器把這個函數的代碼調用放在一個地方,把地址插入定義該函數的代碼中。
所以在文件標題A;
int getanint();
main.c中
int main(...)
{
getanint();
}
編譯時的main.c
它不知道什麼getanint做,甚至在那裏的.o文件將創建不完整,不足以創建實際上編程。請記住,編譯器在單個文件上運行,該文件由於#include指令而可能非常大,但它們會創建單個文件。
當你complie A.cpp
int getanint()
{
return 4;
}
你現在有一個目標文件getanint代碼。
要實際製作程序,您必須獲取main.o和A.一起並將功能的定義插入適當的位置。這是鏈接器的工作。
相關問題
- 1. 函數原型聲明
- 2. 函數聲明不是一個原型
- 3. 聲明與原型
- 4. 函數原型類型/聲明UxTheme.dll -dynamic-loading
- 5. 泛型函數聲明
- 6. 新類型聲明函數?
- 7. 函數原型錯誤,非void函數
- 8. 用FILE聲明一個函數原型作爲參數
- 9. Javascript原型常量聲明
- 10. C++:friend聲明「聲明一個非模板函數
- 11. 非詳盡模式在函數聲明
- 12. g ++「operator <<」聲明爲非函數「
- 13. 爲什麼不在原型中聲明函數?
- 14. 函數應該有一個原型,同時在類中聲明
- 15. 術語:前向聲明與函數原型
- 16. 是否有必要聲明函數的原型?
- 17. C的誤差:函數原型聲明不在範圍內
- 18. 爲什麼原型必須在構造函數之外聲明?
- 19. 爲函數原型和聲明創建語法bison
- 20. 聲明爲原型的函數未定義
- 21. 在main中聲明的函數原型 - 最佳實踐?
- 22. 正則表達式來提取C函數原型聲明?
- 23. C++對象創建或函數原型聲明
- 24. python描述符協議函數原型聲明
- 25. 具有函數聲明/原型和定義的C++模板
- 26. 關於函數聲明和原型的困惑
- 27. 使用函數原型的Javascript名稱空間聲明
- 28. 如何聲明返回std iterator的函數原型?
- 29. Javascript:函數聲明類型對於setInterval和onComplete非常重要?
- 30. 函數聲明
但在我發佈的鏈接以及它明確表示的問題上。查看答案的最後一行。 – Bazooka 2012-01-27 15:22:26
@Parminder:檢查更新的答案 – 2012-01-27 15:26:55
感謝您的答案。我想我明白了。 – Bazooka 2012-01-27 15:32:32