Hallo Leute,
in meinen reinen C Projekten nutze ich immer die Definitionen aus der
<stdint.h>:
uint8_t, uint16_t und uint32_t genauso wie
UINT16_MAX usw
Wenn ich den Quellcode copy&paste in ein cpp benutze, gibt es immer
wieder Kompilierfehler, das UINT16_MAX nicht definiert ist.
Ich benutze Qt 5.5 mit dem Mingw Compiler.
Dort steht im <stdint.h>:
1 | /* 7.18.2 Limits of specified-width integer types */
|
2 | #if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) || \
|
3 | defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L
|
4 |
|
5 | /* 7.18.2.1 Limits of exact-width integer types */
|
6 | #define INT8_MIN (-128)
|
7 | #define INT16_MIN (-32768)
|
8 | #define INT32_MIN (-2147483647 - 1)
|
9 | #define INT64_MIN (-9223372036854775
|
Also er würde die Macros kennen, wenn
- defined(__STDC_LIMIT_MACROS) gesetzt ist oder
- __cplusplus >= 201103L erfüllt ist.
Meine Frage:
- darf/soll ich ich über meine IDE im Buildprozess __STDC_LIMIT_MACROS
setzen? Oder ist das eher für Compiler-interne Sachen?
- Was ist der bevorzugte Weg diese Sachen (INT16_MIN) zu benutzen?
(PS Ich weiss unter cpp gibt es noch die #include <limits>, aber ich
wollte den reinen/unmodifizierten C Code benutzen.)
Danke für eure Hinweise.
Adib.
--