我在C中有2個函數做的完全一樣,唯一的區別是傳遞給每個函數的數據類型例如一個是int另一個char *。 有沒有辦法將這些函數合併爲一個,這樣當我調用這個函數時,我不必擔心數據類型。這可以使用模板在C++中完成,但我想在C中做同樣的事情,但不知道如何,thx。C編程模板數據類型
2
A
回答
1
我知道兩種常用的方法來處理這種situtation在C.
1)更換int和 「字符*」,用 「無效* p」 和 「INT大小」
void f1(int i); void f2(char *str); -> void f(void *p, int s);
f(&i, sizeof(i)); f(str, strlen(str);//or may be f(str, sizeof(str[0]);
例如看到qsort從STDLIB
2)使用預處理器,就像
#define f(arg) do { \
//magic
} while (0)
這樣的東西用於模擬的std ::林列表ux內核。
+0
謝謝,會做 –
0
如果他們是「做同樣的事情」,然後在其中的一個你的參數轉換成另一種類型(char* ==> int
或int ==> char*
)也許。如果是這樣,你可以只做轉換,然後調用其他函數。這樣你就只能擁有大部分的副本。
真的沒有辦法像這樣優雅地「模板」行爲。試圖這樣做,只會讓你的代碼變得難以理解。
相關問題
- 1. C++模板模板非類型參數
- 2. 類型(函數模板):C++
- 3. C++條件模板基於數據類型編譯
- 4. 模板的數據類型
- 5. 編譯時檢查模板類型C++
- 6. 數據類型模型C++
- 7. 爲基本數據類型和特徵數據類型編寫模板函數
- 8. C#值類型類模板
- 9. 數據類型`long` C編程
- 10. C++ - 一個模板類專業函數模板與非類型模板參數
- 11. 在類型選擇C++模板元編程問題
- 12. C++模板化類型檢查編譯時線程安全嗎?
- 13. C++模板集合類型
- 14. 模板類型檢查C++
- 15. C#模板類型繼承
- 16. C++模板 - 多種類型
- 17. 基於模板參數C++模板函數返回類型
- 18. 根據模板參數包裝類型容器的模板類
- 19. C++具有多種數據類型的'Undefined Reference'模板類
- 20. C++ - 比較模板和類之間的數據類型
- 21. C++,返回類型爲模板類型的模板
- 22. 如何從其他類型獲取類型(C++模板元編程)
- 23. 編程數據類型
- 24. C++ 11可選模板類型參數?
- 25. C++ STL函數模板類型推演
- 26. C++模板:爲特定數據類型創建專用函數
- 27. C++模板專業化 - 非法類型非類型模板參數「__formal
- 28. C++中的模板編程
- 29. 整數的C++ power,模板meta編程
- 30. C++模板編程/ STL推導參數
你在做什麼,對於字符串和整數都完全相同? –
也許給我們看代碼吧? – Bart