Forum: Compiler & IDEs C Code generierung durch Platzhalter


von Tom84 (Gast)


Lesenswert?

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

von holger (Gast)


Lesenswert?

>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?

von Bitflüsterer (Gast)


Lesenswert?

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.

von Tom84 (Gast)


Lesenswert?

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.

von Daniel A. (daniel-a)


Lesenswert?

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.

von Daniel A. (daniel-a)


Lesenswert?

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
von Karl H. (kbuchegg)


Lesenswert?

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
von Karl H. (kbuchegg)


Lesenswert?

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
Noch kein Account? Hier anmelden.