標題有點exxagerated,但我仍然不明白。爲每個變量創建一個新的typedef有什麼意義?
作爲最基本的例子,從time.h
採取size_t
類型:
爲size_t < ...>在頭文件(中 其他)作爲無符號整數類型定義。
甚至重命名unsigned int
到size_t
有什麼意義?這樣的事情通常會讓代碼更難理解,因爲它們讓開發人員查找這些類型聲明,即使它是重命名的基本類型,也可能是某個類/結構。然而,我看到這在不同的圖書館中做了很多。
標題有點exxagerated,但我仍然不明白。爲每個變量創建一個新的typedef有什麼意義?
作爲最基本的例子,從time.h
採取size_t
類型:
爲size_t < ...>在頭文件(中 其他)作爲無符號整數類型定義。
甚至重命名unsigned int
到size_t
有什麼意義?這樣的事情通常會讓代碼更難理解,因爲它們讓開發人員查找這些類型聲明,即使它是重命名的基本類型,也可能是某個類/結構。然而,我看到這在不同的圖書館中做了很多。
甚至將unsigned int重命名爲size_t有什麼意義?這樣的事情經常 使更難的代碼來了解
這使得代碼更容易向明白,你馬上就知道什麼對象表示,「這是某種形式的大小的」。將其與裸露的int
進行比較。真正的根本型沒有殺到:只要你不知道它的代碼保持便攜式
今天,它可能是一個unsigned int
但也許明天它會是一個unsigned long long
。只要你的程序使用權類型是面向未來的
他們讓開發人員尋找那些類型聲明
別看:你會被誘惑做非隨身攜帶的東西。想想你認爲C++ std::string
的方式。你知道它做了什麼,你知道如何使用它,但你不知道里面是什麼。
size_
t用於確保portability。 size_t
並非總是「unsigned int」,但它是可以表示給定平臺上最大可能對象的大小。
對於低級庫如標準C庫,typedef
對於提高用戶程序的可移植性非常重要;沒有爭論。
另一方面,在程序中使用別名是一個有趣的問題。基本上有兩個原因:
原因是因爲這些類型可以讓您更好地知道變量代表什麼。而不是隻看到一堆,如std :: size_t,std :: ptrdiff_t等類型告訴你更多關於發生了什麼事情。
我同意typedefs可以使閱讀代碼變得更加困難,因爲你必須繼續查找什麼是東西。微軟的MFC具有typedefs類型定義的類型。當你發現真正的東西時,你忘了原來的名字是什麼。 – Scooter
在32位系統中size_t是4個字節,在64位系統中size_t將是8個字節,但int仍然是4個字節 – Nulik