[vz-dev] vzlogger / c++port

Jakob Hirsch jh at plonk.de
Fri Jul 27 09:51:48 CEST 2012


Justin Otherguy, 27.07.2012 09:28:
>>>> -	long timestamp = 1; +	double timestamp = 1;
>> 
>> Um fp-Arithmetik zu vermeiden, sollte man eher long long nehmen,
> ok, guter Punkt!
> 
>> das ist i.A. 64bit breit und reicht damit für den ms-timestamp.
> hab's gerade getestet - funktioniert. Bin nicht sicher, welche Länge
> "long long" hier hat - müssen aber mehr als 32 Bit sein, ansonsten
> würde ich den gleichen Fehler wie mit "long" erwarten. Hängt das von
> der Plattform/vom Compiler ab?

Laut http://en.wikipedia.org/wiki/C_data_types#Basic_types: "long long
signed integer type. At least 64 bits in size. Specified since the C99
version of the standard."

Größer als 64bit dürfte es aber auf üblichen Plattformen nicht sein. Zum
nachschauen kann man sowas benutzen:

#!/bin/bash -e
cat > longlong.c <<EOF
#include <stdio.h>
int main() { printf("%d\n", sizeof(long long)); }
EOF
gcc -o longlong longlong.c
./longlong
rm longlong


Auf meinem x86_64-Rechner hat long auch schon 64bit, C garantiert dafür
aber eben nur "At least 32 bits in size."

>> Wenn man ganz sicher sein will, nimmt man uint64_t, muß dann aber
>> <stdint.h> oder so includen.
> hab es auch mal mit uint64_t getestet - tut ebenfalls (auch ohne
> zusätzliches include - warum?). 

Evt. schon durch ein anderes include abgedeckt, oder sogar ein
C++-Standardtyp.

> Ist uint64_t portabler?

K.A. Ist evt. auch Platform&Compiler-abhängig, unter Linux aber m.W.
immer vorhanden. Aber da long long immer ausreicht, würde ich einfach
das benutzen.



More information about the volkszaehler-dev mailing list