我第一次遇到這個名爲通用庫的術語,我無法理解通用庫的含義。什麼是C中的通用庫?
回答
通用庫是一種可以與多種類型一起使用的庫。多個號碼類型的詳細
在C11一個通用的定義可以是這樣的:
#define cbrt(X) _Generic((X), long double: cbrtl, \
default: cbrt, \
float: cbrtf)(X)
在早期版本的下1
不得不使用剛剛各項宏觀弄虛作假,如如SO question referred to by @user1929959中所示the commentary
和'void *'的定義是另一種方法... – deepmax 2013-02-25 11:47:37
你能不能指出你正在顯示的代碼的解釋?語法看起來很尷尬(我不熟悉c11),我無法得出它的意圖。 – 2013-02-25 11:49:24
@MM .:是的,一種手段爲了同一目的,但我從來沒有聽說過這種方法稱爲通用代碼。不同之處在於客戶端代碼之一是通過'void *'進行投射,而不是通過宏隱藏並且通過集中測試來保證安全 – 2013-02-25 11:50:04
「Generic」在這裏可能是指「參數化數據類型」(來自Java?)。唉,C在處理(數據)類型方面非常薄弱 - 就「類型安全」而言。因此,C中的常用方法是使用回調函數參數化一個算法,您必須實現該算法才能執行類型特定的工作。數據本身通常由void*
表示。
舉個例子,你可以看看在C-標準功能qsort
(從人排序):
#include <stdlib.h>
void qsort(void *base, size_t nmemb, size_t size,
int(*compar)(const void *, const void *));
base
是一個「通用的」指針數據,nmemb
和size
是附加有關您的數據和compar
的信息將是必須提供的回調函數,以便能夠比較數據類型的兩個元素。
有很多庫爲您提供算法。這個數字是如此之大以至於你需要指定...
- 1. 什麼是C的通用庫?
- 2. 什麼是C++(通用(C/C++)與(通用C)/ C++)
- 3. 什麼是BCrypt的主要C/C++庫?
- 4. C中最流行的通用集合數據結構庫是什麼?
- 5. C#PostMessage的必要庫是什麼?
- 6. C#Azure庫中的「DoesServiceRequest」裝飾屬性的用途是什麼?
- 7. 什麼庫是wglSwapIntervalEXT中的?
- 8. 什麼是用C
- 9. 什麼是靜態庫,什麼是動態庫,有什麼區別,什麼是更好的使用,爲什麼?
- 10. 在g ++中調用c#.net webservices的最佳庫是什麼?
- 11. 什麼是C++中的ScopeGuard?
- 12. 什麼是C#中的int?
- 13. C中的isatty()是什麼?
- 14. 什麼是C中的「-1L」?
- 15. 什麼是C#中的CreateNewAttribute?
- 16. 什麼是C#中的0xFF?
- 17. Objective-C中的'^'是什麼
- 18. C++中的`&|是什麼?
- 19. 什麼是C#中的[]?
- 20. c#中的sprintf是什麼?
- 21. 什麼是C#中的[....]
- 22. C++中的SAL_CALL是什麼?
- 23. 用於HTML DOM構建/更改的C/C++庫是什麼?
- 24. 什麼是C/C++中最好的計算機視覺庫?
- 25. 什麼是C/C++中最好的加密庫?
- 26. 什麼是C中的前向引用?
- 27. c#console.writeline中{0}的用法是什麼?
- 28. C#中屬性的用途是什麼?
- 29. C中(Underscore)的用法是什麼?
- 30. C#中代表的用法是什麼?
在C++中,泛型機制被稱爲「模板」。只要提一下,這樣你就可以做更好的研究並改進問題。 – 2013-02-25 11:38:49
@NiklasB,泛型不一定是指模板。它可能是「通用聲音處理庫」。 OP需要澄清他聽到的情況。 – 2013-02-25 11:40:54
@NiklasB .: C89沒有泛型。現代C(最新標準)具有泛型。或者,那個標準叫泛型的東西 – 2013-02-25 11:42:06