64 Bit Integer Probleme Linux

L

lsware

Grünschnabel
Hi,

habe ein Problem mit unsigned long long int und dem g++
Für vernünftige Formatierung einer Ausgabe von 64 Bit Integern mittels printf include ich die inttypes.h
Der gcc geht klaglos über den Code, der g++ nicht - zumindest auf Linux 2.4 und 2.6. Komischerweise geht bei einem Freund unter cygwin der Code durch.

g++ 3.4.6 und 4.1.1 zeigen den gleichen Fehler:
-----------------
intmax2.c: In function 'int main()':
intmax2.c:10: error: expected `)' before 'PRIx64'
-----------------

Der Code:
#include <stdio.h>
#include <inttypes.h>

int main( void )
{
int shift;
for ( shift = 0; shift < 64; ++shift )
{
unsigned long long int a = 1ULL << shift;
printf("shift = %2d, a = %016"PRIx64"\n", shift, a);
}
return 0;
}
 
Vielleicht wegen
Code:
#if !defined __cplusplus || defined __STDC_FORMAT_MACROS
inttypes.h (um Zeile 47 in meiner inttypes.h)?
 
Jau, das wird die Zeile schon sein.
Allerdings will ich natürlich das nicht auskommentieren oder verändern, nur um meinen Code zum laufen zu bekommen.
Vermutlich hat sich ja jemand was dabei gedacht - stellt sich eben nur die Frage, was das war.
Ich habe das Programm in der Zwischenzeit auf einer SUN probieren können und auch da läuft es problemlos durch.
 
Dann kompilier den Code doch mit
Code:
g++ -D__STDC_FORMAT_MACROS
in der header-Datei steht ja drin, dass die nur gueltig sein sollten, wenn sie explizit erfragt sind. Das kannst Du ja mit dem obigen Makro erreichen, ohne irgendwelchen Code zu veraendern.
 
Die Idee ist nicht schlecht und auch wenn ich nicht weiß, wer "normalerweise" das Macro setzt ist das auf jeden Fall eine durchaus nette Lösung.

VIELEN DANK!
 

Ähnliche Themen

Unix Webserver mit HTML Seite erstellen

GCC liefert in Eclipse Kompilierfehler

Prozesskommunikation mit PIPES - wie funktioniert das?

Ausführbare C-Datei von Mac OS auf Embedded Linux ausführen

Aufgabe in C

Zurück
Oben