Rechnen mit Makros

Gast #1433067
Lesenswert?

Hallo Leute,

ich hab nur eine kurze Frage, die wahrscheinlich auch nur einer kurzen 
Antwort bedarf:

ich habe zwei Makros:
#define MAX_CYCLE_TIME 60  // a cycle can not last longer than 60s
#define LOG_CYCLE_POINTS_INTERVAL 0.01 // Log all system data every 10ms

Daraus berechne ich mir die benötigte Puffergröße (hier also 6000 = 60 
/0.01)

Ich wollte mir ein neues Makro einführen, ungefähr so:
#define LOGBUFFERSIZE  MAX_CYCLE_TIME/LOG_CYCLE_POINTS_INTERVAL

Geht das nicht? Geht´s anders? Ich bekomme kein Ergebnis.

Danke für eure Hilfe!

Grüße,

patrick
Gast #1433108
Lesenswert?

Hallo Leute,

da der Buffer später ein int möchte, hab ich´s so gemacht:

#define LOGBUFFERSIZE 
((int)((float)MAX_CYCLE_TIME/LOG_CYCLE_POINTS_INTERVAL))

double  Time_Buffer  [LOGBUFFERSIZE];

Es funktioniert!

Vielen Dank für eure schnellen Antworten!
Mit ein bisschen probieren hätt ich schon auch drauf kommen können!

Grüße,

Patrick
#1433110
Lesenswert?

Patrick schrieb:

> #define MAX_CYCLE_TIME 60  // a cycle can not last longer than 60s
> #define LOG_CYCLE_POINTS_INTERVAL 0.01 // Log all system data every 10ms
>
> Daraus berechne ich mir die benötigte Puffergröße (hier also 6000 = 60
> /0.01)

Soweit so gut

> Ich wollte mir ein neues Makro einführen, ungefähr so:
> #define LOGBUFFERSIZE  MAX_CYCLE_TIME/LOG_CYCLE_POINTS_INTERVAL

Nicht 'ungefähr'
Hast du es so, oder hast du es nicht so

> Geht das nicht? Geht´s anders? Ich bekomme kein Ergebnis.

Was heißt 'kein Ergebnis'. In welchem Zusammenhang? Wo wird das Makro 
verwendet?


(Vergiss die Antworten, die sich um den cast drehen. So wie du das hast, 
passt das schon)
Gast #1433163
Lesenswert?

Hallo Karl Heinz,

ich hab wieder mal nicht gut aufgepasst und alles viel zu umständlich 
gemacht!

Ich hatte es genau so geschrieben:

   #define MAX_CYCLE_TIME 60  // a cycle can not last longer than 60s
   #define LOG_CYCLE_POINTS_INTERVAL 0.01 // Log all system data every 
10ms
   #define LOGBUFFERSIZE  MAX_CYCLE_TIME/LOG_CYCLE_POINTS_INTERVAL

Das ist tatsächlich auch richtig so, danke Karl Heinz!

Aber:
In Hinsicht auf
   double Time_Buffer [LOGBUFFERSIZE];
muss aber dann doch noch gecastet werden:
   #define LOGBUFFERSIZE (int)(MAX_CYCLE_TIME/LOG_CYCLE_POINTS_INTERVAL)

Funktioniert einwandfrei!

Vielen Dank!

Grüße,

Patrick

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren