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
#if defined Syntax
14.03.2017, 19:51
Beitrag #1
#if defined Syntax
Guten Abend,

ich habe 2 Verschiedene Gehäuse der Atmega328 Controller (TQFP und DIL)
Und ich habe eine Library geschrieben und nun soll der Anwender im Hauptprogramm sowas schreiben wie:

#define DIL oder #define TQFP

und in der Library soll dann die entsprechenden Pins definiert werden in etwa so:

Code:
//Pins für TQFP in Library
#define PinX 1
#define PinY 2

//Pins für DIL in Library
#define PinX 7
#define PinX 8

ich habe es mir so vorgestellt:

Code:
#ifdef TQFP
//Pins für TQFP in Library
#define PinX 1
#define PinY 2

#elseifdef DIL

//Pins für DIL in Library
#define PinX 7
#define PinX 8
#else
//Vielleicht ein Compiler error wie "Kein Controller ausgewählt" ähnlich dem Fehler wenn die Baudrate abweichung > 1% ist"
#endif

wobei meine Syntax natürlich völlig falsch ist.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.03.2017, 19:56
Beitrag #2
RE: #if defined Syntax
(14.03.2017 19:51)BennIY schrieb:  wobei meine Syntax natürlich völlig falsch ist.
Hier ist die richtige Syntax. Zu faul zum Suchen? Wink

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.03.2017, 20:01
Beitrag #3
RE: #if defined Syntax
Ich hab mein c++ und c# buch gewälzt, vergebens.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.03.2017, 20:04
Beitrag #4
RE: #if defined Syntax
(14.03.2017 20:01)BennIY schrieb:  Ich hab mein c++ und c# buch gewälzt, vergebens.
Also in c++ sollte es drin stehen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.03.2017, 20:08 (Dieser Beitrag wurde zuletzt bearbeitet: 14.03.2017 20:10 von BennIY.)
Beitrag #5
RE: #if defined Syntax
Nun gibt es 2 Probleme, beim #error wird der kompilierungsvorgang nicht abgebrochen und ich muss das in der library definieren ich möchte es aber im hauptprogramm definieren.

So schauts nun aus
Code:
#ifdef TQFP
//Pin Definitionen DIL
#define PinX 1
#elif defined DIL
//Pin Definitionen TQFP
#define PinX 5
#else
#error "Kein Controller ausgewählt, definiere DIL oder TQFP"
#endif

Das Abbrechen der Kompilierung funktioniert nun nachdem ich diesen codeblock von der cpp in die h datei geschrieben habe.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.03.2017, 20:19
Beitrag #6
RE: #if defined Syntax
(14.03.2017 20:08)BennIY schrieb:  Nun gibt es 2 Probleme, beim #error wird der kompilierungsvorgang nicht abgebrochen und ich muss das in der library definieren ich möchte es aber im hauptprogramm definieren.

So schauts nun aus
Code:
#ifdef TQFP
//Pin Definitionen DIL
#define PinX 1
#elif defined DIL
//Pin Definitionen TQFP
#define PinX 5
#else
#error "Kein Controller ausgewählt, definiere DIL oder TQFP"
#endif

Das Abbrechen der Kompilierung funktioniert nun nachdem ich diesen codeblock von der cpp in die h datei geschrieben habe.
Eigentlich gehört das auch in den Header. Schreib einen Kommentar rein, dass der User weiß, das er das anpassen muß. Das machen einige Libs.
Probier mal das #define in der ino vor das #include zu setzen.

Mehr fällt mir im Moment nicht ein. Evtl. hat noch einer eine Idee.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.03.2017, 20:26
Beitrag #7
RE: #if defined Syntax
Habe ich probiert geht nicht Gut dann wirds vielleicht mit Variabeln gelöst.
Dank dir
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.03.2017, 21:25
Beitrag #8
RE: #if defined Syntax
Hallo,
das Problem ist, dass die ganzen #define und #ifdef Befehle reine Kommandos für den Precompiler sind, und nur in dem jeweiligen Compilerlauf wirken. Der Sketch (.ino-Datei) und die .cpp-Datei deiner Library werden aber in getrennten Compilerläufen übersetzt, und erst der Linker setzt das dann zusammen. Deshalb bekommt deine .cpp-Datei der Library ein #define, das im Hauptprogramm gesetzt wurde, nie zu Gesicht, und kann es deshalb auch nicht auswerten.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Smile Blutiger Anfänger hat ein Syntax Problem, bitte um Unterstützung ICdan88 1 877 24.09.2014 18:38
Letzter Beitrag: Thorsten Pferdekämper

Gehe zu:


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