Bedingte Compilierung von Extern
|
23.11.2020, 07:43
(Dieser Beitrag wurde zuletzt bearbeitet: 23.11.2020 07:45 von Nichtraucher.)
Beitrag #1
|
|||
|
|||
Bedingte Compilierung von Extern
Hallo!
Ich will in einer Datei ein "#define Wert x" verwenden. "Wert" soll aber in einer anderen Datei des Projektes festgelegt werden. Um zum Beispiel ein Array, in Datei#2, zu erstellen: "int meinArray[Wert];" "Wert" soll aber in Datei#1 definiert werden: "#define Wert x". So würde es normal in einer Datei funktionieren: Code: #define Wert 15 Ich (ver)suche so etwas: Datei#1 Code: #define Wert 15 Datei#2.h Code: int meinArray[Wert]; Ich habe das mit Konstante versucht, in Datei#1: "const int Wert = 15;" Und in Datei#2 mit: "extern const int Wert;" Die Konstante kann ich so in Datei#2 sichtbar machen. Bekomme dann aber den Fehler: "array bound is not an integer constant before ']' token". Konstanten funktionieren hier nicht, für bedingte Compilierung. Ich finde hier einfach keine Lösung. Suchmaschinen spucken auch noch nicht das richtige dazu aus. Ich finde diesen speziellen Fall z.Z. nirgends im Netz. Wie bekomme ich ein "#define ...", das ich in Datei#1 hinterlege, in meine Datei#2 ? Also wie kann ich den per "#define" angegebenen Wert in Datei#2 übernehmen? Gruß |
|||
23.11.2020, 12:03
Beitrag #2
|
|||
|
|||
RE: Bedingte Compilierung von Extern
#define ist eine reine Textersetzung und muss zur Compilezeit bekannt sein.
Du könntest könntest versuchen, es in einer Headerdatei zu definieren, die Du includest. extern kann man Variable deklarieren, keine Konstanten für die Compilezeit. Gruß Tommy "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
23.11.2020, 13:03
Beitrag #3
|
|||
|
|||
RE: Bedingte Compilierung von Extern
Ich habe alles Mögliche versucht. Nichts hat funktioniert. Irgendwie funktioniert #define immer nur in der Datei, in der es steht. Eine H-Datei zu includen, würde keinen Sinn machen, dann kann ich das auch lassen. Ich wollte nicht immer ins Verzeichnis navigieren und die Bibliothek ändern, bloß weil ich für nodeMCU den einen Wert so brauche und für AVR einen andern Wert.
Gruß |
|||
23.11.2020, 13:19
Beitrag #4
|
|||
|
|||
RE: Bedingte Compilierung von Extern
(23.11.2020 13:03)Nichtraucher schrieb: Ich wollte nicht immer ins Verzeichnis navigieren und die Bibliothek ändern, bloß weil ich für nodeMCU den einen Wert so brauche und für AVR einen andern Wert. Servus! Wär da nicht #ifdef eine Lösung? Gruß aus Wiener Neustadt Toni ================================================================= Seit die Mathematiker über die Relativitätstheorie hergefallen sind, verstehe ich sie selbst nicht mehr. Wer Rechtschreibfehler findet darf sie behalten ![]() |
|||
23.11.2020, 13:38
Beitrag #5
|
|||
|
|||
RE: Bedingte Compilierung von Extern
(23.11.2020 13:03)Nichtraucher schrieb: Eine H-Datei zu includen, würde keinen Sinn machen, dann kann ich das auch lassen. Ich wollte nicht immer ins Verzeichnis navigieren und die Bibliothek ändern, bloß weil ich für nodeMCU den einen Wert so brauche und für AVR einen andern Wert.Doch, genau dafür macht das Sinn. mit #ifdefined. Schau mal hier Gruß Tommy "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
23.11.2020, 13:55
(Dieser Beitrag wurde zuletzt bearbeitet: 23.11.2020 14:02 von MicroBahner.)
Beitrag #6
|
|||
|
|||
RE: Bedingte Compilierung von Extern
(23.11.2020 13:03)Nichtraucher schrieb: bloß weil ich für nodeMCU den einen Wert so brauche und für AVR einen andern Wert.Ob für nodeMCU oder für AVR kompilert wird, kannst Du mit bereits vordefinierten defines abfragen. Code: #ifdef ESP8266 P.S. Diese defines stehen in keiner .h-Datei, sondern werden dem Compiler als Aufrufparameter übergeben. Wenn man in den Voreinstellungen die 'ausführliche Ausgabe während Kompilierung' aktiviert, kann man sehen, was da übergeben wird. Gruß, Franz-Peter |
|||
23.11.2020, 18:59
Beitrag #7
|
|||
|
|||
RE: Bedingte Compilierung von Extern
Ja, das mit dem Abfragen, ob was definiert ist, hatte ich versucht. Das Klappte nicht.
Ich hatte so probiert: #ifndef __meinWert__ .... Bei dem Link vom Tommy habe ich jezt aber gerade was anderes gesehen: #if defined(__AVR__) Ich versuche das mal so, dann mit: #if defined(__meinWert__) Gruß |
|||
23.11.2020, 19:05
Beitrag #8
|
|||
|
|||
RE: Bedingte Compilierung von Extern
Eher so:
Code: #if defined(__AVR__) Gruß Tommy "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
|
|
Möglicherweise verwandte Themen... | |||||
Thema: | Verfasser | Antworten: | Ansichten: | Letzter Beitrag | |
Compilierung dauert lange | student1704 | 6 | 9.173 |
22.09.2020 19:31 Letzter Beitrag: Bitklopfer |
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste