Hallo!
Folgender Code
#define Ueberschrift1 "Motor"
#define Ueberschrift2 "Kabel"
#define Ueberschrift3 "Batterie"
#define Anzahl_Ueberschriften 3
int Zaehler;
for(Zaehler=1; Zaehler<=Anzahl_Ueberschriften; Zaehler++;)
{
UART1_send_string(GLUE(Ueberschrift,Zaehler));
}
soll gerne aus der COM ausspucken:
"Motor Kabel Batterie"
Offensichtlich tut das GLUE nicht das, was ich mir wünsche, der Compiler
meldet "UeberschriftZaehler undeclared". Klingt leider nachvollziehbar.
Aber wie kann ich machen, dass die Wertigkeit der Variable "Zaehler"
eingesetzt wird anstelle des Namens?
Greetz
Stephan
Schadeschade. Ich habe das Gefühl, bei mir wäre es schon sinnvoll:
mein Programm soll am Hyperterminal einen Infoschirm aufbauen. Mit
Überschriften und Unterpunkten zur jeweils angewählten Überschrift.
Um das Programm einfach wiederverwenden zu können (darum gehts mir),
dachte ich, muss man nur in der Heeaderdatei die Anzahl und Name der
Überschriften sowie die Anzahl und Namen der Unterpunkte angeben- die
Positionierung soll das Programm dann selber übernehmen.
Gibts denn da keine andere Möglichkeit?
Stephan schrieb:> Schadeschade. Ich habe das Gefühl, bei mir wäre es schon sinnvoll:
Was soll da sinnvoll sein?
Der Preprozessor kommt zum Einsatz noch ehe sich der COmpiler das
Programm vornimmt. D.h. mit dem Preprozessor kannst du im Prinzip nur
Dinge machen, die du auch mit deinem Texteditor machen kannst.
Alles was darauf abzielt, dass es zur Laufzeit des Programms erst
entsteht, kann aus Prinzipgründen nicht vom Proeprozessor erledigt
werden.
> mein Programm soll am Hyperterminal einen Infoschirm aufbauen. Mit> Überschriften und Unterpunkten zur jeweils angewählten Überschrift.
Ja, und?
Definier dir eine Datenstruktur, füll die Werte aus und lass das
Programm die Datenstruktur abarbeiten.
> Um das Programm einfach wiederverwenden zu können (darum gehts mir),> dachte ich, muss man nur in der Heeaderdatei die Anzahl und Name der> Überschriften sowie die Anzahl und Namen der Unterpunkte angeben-
So gross ist der UNterschied dann ja auch wieder nicht zu dem
vorgeschlagenem. Ob du nun ein neues #define anlegst, oder ob du zum
Array eine Zeile hinzufügst, ist arbeitsmässig .... kein Unterschied.
Der Compiler kann dir sogar noch unter die Arme greifen
1
constchar*Texte[]=
2
{"Motor",
3
"Kabel",
4
"Batterie",
5
};
6
7
#define ARRAY_SIZE(x) (sizeof(x)/sizeof(*x))
8
...
9
10
11
for(i=0;i<ARRAY_SIZE(Texte);i++)
12
UART1_send_string(Texte[i]);
jetzt brauchst du dich noch nicht mal mehr um die Anzahl kümmern.
> Gibts denn da keine andere Möglichkeit?
C gut genug lernen.
> mein Programm soll am Hyperterminal einen Infoschirm aufbauen.> Mit Überschriften und Unterpunkten zur jeweils angewählten> Überschrift.
mal so als Idee skizziert.
Der Seitenaufbau ist zwischen den mit
// ----
markierten Zeilen. Die Texte alleine helfen dir ja auch nicht weiter. Du
musst die Einzelteile ja auch miteinander verknüpfen, so dass man von
einer 'Seite' auf die nächste 'Subseite' kommt (falls es eine gibt).