Hallo, ich weiß das man in C Makros definieren kann um dadurch Schreibarbeit zu sparen. Allerdings ist dies sehr mühselig die Abfragen zu programmieren ob eine Makro definiert ist oder nicht. Ich würde gerne an mehreren Stellen im Code immer den gleichen Variablennamen einfügen, bzw. die Stellen an denen die Variable steht wiederum durch einen Platzhalter zu ersetzen, um einmalig den Namen für die Variable angeben zu müssen und anschließend wird der C Code generiert an denen die Variable verwendet wird. Der Platzhalter soll auch für mehrere Header und C Dateien gültig sein. Kennt jemand einen Editor mit dem das möglich ist? Viele Grüße Tom
>Ich würde gerne an mehreren Stellen im Code immer den gleichen >Variablennamen einfügen, bzw. die Stellen an denen die Variable steht >wiederum durch einen Platzhalter zu ersetzen, Beispiel?
Ick wunder mir die janze Zeit... Hm. Also ein Define geht so:
1 | #define MEINESPEZIALVARIABLE x
|
und mit
1 | #ifdef MEINESPEZIALVARIABLE
|
1 | #ifdef MEINESPEZIALVARIABLE
|
prüfst Du ob ein define vorhanden ist oder nicht. Im Code verwendest Du die dann z.B. so
1 | main () { |
2 | int MEINESPEZIALVARIABLE; |
3 | int a, b, c; |
4 | a = 5; |
5 | b = 3; |
6 | c = 7; |
7 | MEINESPEZIALVARIABLE = a+ b * c; |
8 | }
|
Das ist Dir wahrscheinlich alles bekannt. Aber mir wird aufgrund Deiner Beschreibung nicht klar: 1. Warum es schwer ist, zu testen ob ein define definiert ist. (Ein Problem ist allerdings, zu prüfen ob Ersatztext vorhanden ist). 2. Wozu Du für die Verwendung um Code einen extra Editor verwenden willst. 3. Wozu überhaupt Variablennamen im Code veränderbar sein sollen. Vielleicht kannst Du das ja mal anhander der Schnipsel in meinem Beitrag etwas ausführlicher erklären. Tut mir leid, aber für mich hört sich das nach Design-Fehler an oder eine Lücke in den C-Kenntnissen. Aber ich irre mich vielleicht.
struct zahlen{ int zahl01; int zahl02; float zahl1; float zahl2; unsigned int zahl11; unsigned int zahl12; }diverses; ... printf("Beispiel für ein Platzhalter i%",diverses->Platzhalt1); printf("Beispiel für ein Platzhalter %i",diverses->Platzhalt2); printf("Beispiel für ein Platzhalter %i",diverses->Platzhalt3); printf("Beispiel für ein Platzhalter %i",diverses->Platzhalt4); printf("Beispiel für ein Platzhalter %i",diverses->Platzhalt5); printf("Beispiel für ein Platzhalter %i",diverses->Platzhalt6); .... Dabei soll Platzhalt1 für zahl1 Platzhalt2 für zahl2 Platzhalt3 für zahl3 Platzhalt4 für zahl4 Platzhalt5 für zahl5 Platzhalt6 für zahl6 stehen.
Einen solchen Editor findest du nicht. Makros sind aus meiner sicht die einzige vernünftige Lösung. Wenn du ein makefile hasst, kannst du einmal definierte optionen für alle verwendeten dateien nutzen. Du könnest also alle Dateien mit der option "-D PLATZHALTER=ErsetzenDurch" kompilieren. Oder eine header datei überall einbinden. Gibt es bei gcc nicht ne option -I oder so? Die Frage ist irgendwie komisch.
Beim beispiel oben bieten sich makrofunktionen an:
1 | #define PLATZHALTER zahl0
|
2 | #define Platzhalter(x) PLATZHALTER ## x
|
3 | |
4 | int zahl01, zahl02; |
5 | float zahl11, zahl12; |
6 | |
7 | Platzhalter(1) = Platzhalter(2); |
:
Bearbeitet durch User
Tom84 schrieb: > struct zahlen{ > > int zahl01; > int zahl02; > float zahl1; > float zahl2; > unsigned int zahl11; > unsigned int zahl12; > > > }diverses; > > ... > > printf("Beispiel für ein Platzhalter i%",diverses->Platzhalt1); > printf("Beispiel für ein Platzhalter %i",diverses->Platzhalt2); > printf("Beispiel für ein Platzhalter %i",diverses->Platzhalt3); > printf("Beispiel für ein Platzhalter %i",diverses->Platzhalt4); > printf("Beispiel für ein Platzhalter %i",diverses->Platzhalt5); > printf("Beispiel für ein Platzhalter %i",diverses->Platzhalt6); > > .... etc. etc. Kann es sein, dass du eigentlich auf der Suche nach Arrays bist? Einfach mal in deinem Buch ein paar Seiten weiterblättern. Auch das erstellen von Funktionen würde in etwa auf diese etwas unverständliche Beschreibung passen > Ich würde gerne an mehreren Stellen im Code immer den > gleichen Variablennamen einfügen, bzw. die Stellen an denen die > Variable steht wiederum durch einen Platzhalter zu ersetzen, > um einmalig den Namen für die Variable angeben zu müssen und > anschließend wird der C Code generiert an denen die Variable > verwendet wird.
:
Bearbeitet durch User
Daniel A. schrieb: > Die Frage ist irgendwie komisch. Sehe ich ganz genau so. Tom84, kannst du mal ein echtes, konkretes Beispiel zusammenstellen und nicht so irgendwas hingewürfeltes. Ein tatsächliches Beispiel, in dem sich ganz konkret deine Problemstellung zeigt. Ich denke nämlich, du bellst den komplett falschen Baum an.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.