INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Preprozessor
10.04.2016, 19:28
Beitrag #1
Preprozessor
Hallo!

Bei meinen Letzten Programm-Codes habe ich teilweise Preprozessor-Makros benutz.
Zum Beispiel hatte ich hier dann:
Code:
// Header.h
const int8_t iR[4] = {0, 0, 5, 30};
const int8_t steerScale = 10;
#define SR(rating) (steerScale * (rating))
const int8_t sensorRating[8] = {
    SR(-3 - iR[2]),
    SR(-1 - iR[0]),
    SR(-2 - iR[1]),
    SR(-4 - iR[3]),
    SR(1 + iR[0]),
    SR(2 + iR[1]),
    SR(4 + iR[3]),
    SR(3 + iR[2])
};

Code:
#include "Header.h"

void setup()
{
    Serial.begin(9600);
    while(!Serial);
}

void loop()
{
    Serial.println(sensorRating[7]);
}

Als Ergebnis kam dann jedoch Werte wie z.B.-53. Lässt sich zurückführen, dass das Programm dann
Code:
(iR[2] = 5, steerScale = 10)
// statt:
steeerScale * (-3 - iR[2]) = -80
// das hier rechnet:
steerScale * (- iR[2]) - 3 = -53
Arbeite ich jedoch mit einer normalen Funktion
Code:
int8_t SR(int8_t rating) { return steerScale * rating; }
hat es dann hingegen funktioniert.

Weiters habe ich
Code:
#define A
und dann weiter im Programm
Code:
#ifdef A
abgefragt, was nur teilweise funktioniert hat.

Die Codes bestanden aus dem main code (.ino), header datein (.h) und c++ datein (.cpp). Ich bin mir aber sicher die #define kamen immer bevor #ifdef abgefragt wurde.

Irgendwelche Ideen warum das teilweise nicht funktioniert?

lg Scheams
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste