2016-04-16 9 views
0

Gibt es Standardmakros, die verwendet werden können, um die Größe eines primitiven Typs zur Kompilierzeit zu identifizieren? Ähnlich wie die, die in GCC:Standardgröße Makro für primitive Typen

__SIZEOF_INT__ 
__SIZEOF_LONG__ 
__SIZEOF_LONG_LONG__ 
__SIZEOF_SHORT__ 
__SIZEOF_POINTER__ 
__SIZEOF_FLOAT__ 
__SIZEOF_DOUBLE__ 
__SIZEOF_LONG_DOUBLE__ 
__SIZEOF_SIZE_T__ 

Ich erinnere mich, etwas ähnliches irgendwo zu sehen, aber für den Tod von mir, dass ich ihren Namen nicht finden kann mehr oder erinnern. Derjenige, den ich interessiert, ist meistens der lange Typ.

+1

Es gibt keine std Makro zur Bestimmung Urtyp Größe. Ich nehme an, Sie könnten einen mit den Limit-Makros implementieren. Basierend auf den Max/Min-Werten kennen Sie die Schriftgröße. –

+0

@TrevorHickey: Im Prinzip könnten numerische Typen Padding-Bits haben, die sich nicht in ihren Bereichen widerspiegeln. –

+1

Was ist los mit 'sizeof'? – melak47

Antwort

0

Es gibt keine Standard-Makrodefinitionen für Größen primitiver Typen.

In Boost/Atomic gibt es Makros, die Ihnen Größen von primitiven Typen geben, sie verwenden boost/cstdint.hpp neben anderen Quellen. Beispiel würde aussehen wie folgt:

#include <iostream> 
#include <boost/atomic.hpp> 

int main() { 
    std::cout << BOOST_ATOMIC_DETAIL_SIZEOF_LONG; 
} 

Referenz: http://www.boost.org/doc/libs/1_60_0/boost/atomic/detail/int_sizes.hpp

Verwandte Themen