4
A
回答
6
的功能定義將按照通常的語法:
//declare my function
F f; //it is exactly equivalent to : void f();
//definition
void f() { cout << "hello world"; }
要測試的定義確實是以前聲明的functon的定義,調用函數f()
剛後聲明和前的定義(閱讀評論main()
):
//declaration
F f;
int main()
{
f(); //at compile-time, it compiles because of *declaration*
}
//definition
void f() { std::cout << "hello world" << std::endl; }
至於爲什麼F f{}
不起作用,因爲它是專門由語言規範禁止的。 §8.3.5(C++ 03)說
功能類型的類型定義可以用於聲明函數但不得被用來定義一個函數(8.4)。
[Example:
typedef void F();
F fv; // OK: equivalent to void fv();
F fv { } // ill-formed
void fv() { } // OK: definition of fv
—end example]
要點:
- functon的類型定義可以用來聲明函數
- functon的typedef的不能用於限定的函數
相關問題
- 1. C++使用的typedef非內聯函數
- 2. 如何使用函數的typedef?
- 3. 用的typedef模板函數
- 4. typedef函數指針
- 5. typedef函數在C中的用法
- 6. 從C++中的函數typedef中製作函數指針typedef?
- 7. 字符數組的typedef和在函數中的使用
- 8. 在一個類中有「typedef void FuncCharPtr」如何提供使用非靜態函數的typedef函數?
- 9. 和的typedef函數聲明
- 10. 將typedef聲明爲函數
- 11. typedef函數返回值C
- 12. C函數指針和typedef
- 13. 是否可以在模板化函數簽名中使用typedef?
- 14. 在C中使用函數指針的Typedef?
- 15. 在函數中對typedef創建的變量使用malloc
- 16. 在C中使用C dll中定義的typedef函數#
- 17. 不需要的字符串在構造函數中使用typedef
- 18. typedef如何適用於函數指針
- 19. 在外部函數中訪問Typedef
- 20. 將靜態函數放在Haxe中typedef
- 21. 如何用C++ 11使用語法typedef函數指針?
- 22. 在課堂上使用的typedef自己的結構數據
- 23. 在程序中使用typedef
- 24. 錯誤使用的typedef的typedef
- 25. 上typedef結構使用靜態
- 26. 「使用」(typedef)指針:其默認構造函數返回nullptr?
- 27. 如何使用typedef函數指針來註冊回調
- 28. VC++類模板使用typedef類型實現函數
- 29. 使用typedef函數指針的不完整類型
- 30. 使用@typedef來定義特定的函數類型
如果我在函數定義中使用F,會發生什麼情況?爲什麼是錯誤? – user103214
@ user974191:這不是語言如何指定它的。 – Nawaz
我明白了,這是因爲定義必須在鏈接時解決,而F在當時是未知的,對吧? – user103214