C Code generierung durch Platzhalter

Gast #3646768
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
Gast #3646786
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.
Gast #3646800
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.
#3646801
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.
#3647058
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren