Robert B.: C/C++ Befehl time(NULL) falscher Wert?

Beitrag lesen

Moin,

#include <stdio.h>
#include <time.h>

Wenn du in C++ programmierst, dann nimm doch besser deren Header für die Standardbibliothek:

// …
#include <cstdio>
#include <ctime>

Warum eigentlich iostream und cstdio? Das kann unter Umständen Konflikte bei der I/O geben. In deinem Codebeispiel wird cstdio auch gar nicht verwendet.

using namespace std;

unsigned long startTime, stopTime;

Was für Werte sollen in diesen Variablen gespeichert werden? Die Funktion std::time liefert einen Wert vom Typ std::time_t zurück. Das muss nicht zwingend ein long sein.

int main(int argc, char** argv){
    // …

    uint8_t stamp[4] ;
    * stamp = time(NULL);

Hier unterstellst du, dass std::time einen 32-Bit-Wert zurückgibt. Es können aber auch 64 Bit sein (um das Jahr-2038-Problem zu umgehen).

Wenn mich nicht alles täuscht, dann steht der time_t in stamp auch unter Umständen in einer anderen Byte-Reihenfolge als vielleicht gewünscht. Das könnte hier zum Problem werden:

    radio.write( &stamp, sizeof(stamp)) ;

Ansonsten könnte der Aufruf von write auch geändert werden:

std::time_t stamp = std::time(NULL);

radio.write(&stamp, sizeof(stamp));

Viele Grüße Robert