PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : probleme mit konstanten / limits.h



pablo
05-05-2005, 14:30
ich versuch so den wertebereich einer long long variable aus limits.h auszulesen, natürlich ist limits.h inklutiert. Aber der Compiler sagt dennoch die variblen seien nicht definiert.



#include <stdio.h>
#define __USE_ISOC99
#include <limits.h>

printf(" long long | %d | %ll .. %ll\n", 64 , LLONG_MIN , LLONG_MAX );
printf(" unsigned long long | %d | %d .. %ll\n", 64 , 0 , ULLONG_MAX);


limits.h:



# ifdef __USE_ISOC99

/* Minimum and maximum values a `signed long long int' can hold. */
# define LLONG_MAX 9223372036854775807LL
# define LLONG_MIN (-LLONG_MAX - 1LL)

/* Maximum value an `unsigned long long int' can hold. (Minimum is 0.) */
# define ULLONG_MAX 18446744073709551615ULL

# endif /* ISO C99 */

locus vivendi
05-05-2005, 15:49
Wenn du jetzt auch noch verraten hättest, dass du den Gcc benutzt, hätte man das nicht erraten müssen. Der richtige Weg, um deinem Compiler (+ glibc) beizubringen, C99 zu verwenden lautet auf der Kommandozeile "gcc -std=c99 [...]". Nicht irgendeine Fummelei mit Makros! Deine printfs sind aber trotzdem falsch, wie ein Blick in "man 3 printf" nahelegt.