Übergabe einer mit #define definierten Konstanten an Unterprogramm
-
Guten Morgen zusammen,
ich habe ein Problem bei der Übergabe einer mit #define definierten Konstanten an ein Unterprogramm. Da Code meist mehr als tausend Worte erklärt hier ein Beispiel:
[code]
#define xyz 5/*Prototyp des Unterprogramms*/
void tu_was(???? abc);/*Hauptprogramm*/
void main(void)/*Aufruf des Unterprogramms*/
tu_was(xyz);void tu_was(???? abc)
int b;
b=2*abc;
[code]Dort wo die vier Fragezeichen stehen liegt mein Problem. Was für einen Typ muss ich hier übergeben? Habe schon int, float und double ausprobiert ebenso diverse Kombinationen mit const.
Wäre sehr dankbar für schnelle Hilfe.
Schon mal Danke
Sig
-
Wie Du schon sagtest, da Code mehr als tausend...
Dann nimm bitte auch die C/C++ Codetags, dann poste Code anstelle eines Artefakts.
-
sry wohl vertippt
#define xyz 5 /*Prototyp des Unterprogramms*/ void tu_was(???? abc); /*Hauptprogramm*/ void main(void) /*Aufruf des Unterprogramms*/ tu_was(xyz); void tu_was(???? abc) int b; b=2*abc;
-
sig_freud schrieb:
Habe schon int, float und double ausprobiert ebenso diverse Kombinationen mit const.
Welcher Typ ist denn sinnvoll für diese Aufgabe?
Der Preprozessor macht da reinen Textersatz.
Statt#define xyz 5 ... /*Hauptprogramm*/ void main(void) ... /*Aufruf des Unterprogramms*/ tu_was(xyz);
steht da dann
/*Hauptprogramm*/ void main(void) ... /*Aufruf des Unterprogramms*/ tu_was(5);
Ich würde
int
nehmen.
-
1. Es heißt int main(void).
2. #define ist nur Textersetzung. Übergeben tust du da gar nichts? Funktionsparameter funktionieren so:void print_number(int i) { printf("%i", i); } int main(void) { print_number(5); return 0; }
-
So diesen Code habe ich im Compiler (1cc)
#include <stdio.h> #define xyz 5; /*Prototyp des Unterprogramms*/ void tu_was(int abc); /*Hauptprogramm*/ void main(void) { /*Aufruf des Unterprogramms*/ tu_was(xyz); } void tu_was(int abc) { int b; b=2*abc; return 0; }
Daruafhin bekomme ich unteranderem die Fehlermeldungen:
illegal statement terminationMir geht es darum die definierte Konstante zu übergeben im moment schaffe ich das nur, wenn ich sie in einer anderen int Varaiable zwischenpuffere und das kann ja nicht Sinn der Übung sein.
Klar einfach 5 in die Übergabe zu schreiben ist auch ein Weg aber auch nicht zielführend da ich ja xyz als Konstante habe.
Mache ich hier etwas grundsätzlich falsch?
-
Mach das Semikolon bei #define weg, sonst steht da
tu_was(5;);
-
Und wenn Du hier Fragen stellst und Tipps gegeben bekommst, dann wende die bitte auch an. Sonst kannst Du beim nächsten Mal vergessen, dass diejenigen sich nochmal um Dich bemühen.
void main(void)
ist Erdbeerkäse.
cooky451 schrieb:
1. Es heißt int main(void).
int main(void) { print_number(5); return 0; }