簡體   English   中英

我應該使用C還是C ++實現來返回變量類型的最大大小?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM