[英]Should I use the C or C++ implementation for returning a maximum size of a variable type?
從標准的角度來看,我應該在C ++ <limits>
標頭中使用以下內容嗎?
UCHAR_MAX
是C實現,或者是std::numeric_limits<unsigned char>::max()
是C ++實現。
結果在兩個版本之間是相等的,但是在這種情況下,我應該基於某種標准還是基於可讀性和可移植性來選擇實現。 請注意,此實現必須是跨平台兼容的。 我在寫C ++代碼。
如果您希望代碼能夠作為C進行編譯,則非常需要使用<limits.h>
。 如果您正在編寫C ++,則最好使用C ++ <limits>
標頭。 后者使您可以編寫可在模板中使用的代碼,這些模板實際上無法與C標頭重復:
template <class T>
class mytemplate {
T x;
void somefunc() { x = std::numeric_limits<T>::max(); } // or whatever...
};
當您使用C時, std::numeric_limits
顯然不可用。
在C ++中,這取決於您要執行的操作std::numeric_limits<T>::max()
不是當前C ++標准的常量表達式。
在這些情況下,C-ish宏的替代方法是使用Boost.Integers 整數特征 const_min
/ const_max
,它也可以在模板化上下文中使用。
知道您使用的是哪種語言,然后以該語言編寫。 如果您正在編寫C ++,請使用標准的C ++做事方式。
標准C ++通常是跨平台兼容的(也有例外,比如export
,但export
正在從C ++標准反正刪除)。 堅持使用C ++構造通常比在C和C ++構造之間切換更具可讀性。
您應該使用<limits>保持一致。
在Windows平台上,如果包含<windows.h>,則可能還需要
#define NOMINMAX
避免與最小和最大名稱沖突。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.