C++ und stdint.h

Gast #3371371
Lesenswert?

Hallo zusammen,

ich benutze in meinem C++ Programm die C99 Datentypen und würde auch 
gerne die Limitsbenutzen.
Jetzt sind diese allerdings ausgeblendet:

in stdint-ggc.h:
1
#if !defined __cplusplus || defined __STDC_LIMIT_MACROS
2

3
/* 7.18.2 Limits of specified-width integer types */
4

5
#ifdef __INT8_MAX__
6
# undef INT8_MAX
7
...

Wie bekomme ich denn in C++ die Limits?
Gast #3371402
Lesenswert?

In C++ (C++11) müsste das nicht <stdint.h> sondern <cstdint> sein. Um 
deine Makros zu bekommen, musst du vorher __STDC_LIMIT_MACROS 
definieren. Steht sogar eine Zeile drüber :-)
1
/* The ISO C99 standard specifies that in C++ implementations these
2
   macros should only be defined if explicitly requested.  */
3
#if !defined __cplusplus || defined __STDC_LIMIT_MACROS
Gast #3372097
Lesenswert?

In C++ funktionieren die Limits anders:
1
#include <limits>
2

3
int main () {
4
  std::cout << std::numeric_limits<int>::max () << ", " << std::numeric_limits<double>::min ();
5
}
Das ist so viel eleganter denn so kann der Typ zB ein Template-Parameter 
oder ein typedef sein und man kann dennoch die dazu passenden Limits 
abfragen (im Gegensatz zu den Limit-Makros).

Und seit C++11 wurde <stdint.h> in <cstdint> umbenannt, ja.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren