Hallo Leute, ich habe mal eine Frage was bewikt eigentlich diese #define anweisung ?: #define Function_xy {} wenn ich voher in meiner Routine eine Funktion mit gleicher Name, aber so difiniert habe: int Function_xy(int a , int b) { return irgenwas; } MfG
Das bewirkt, das der Preprozesseor aus einem Aufruf Function_xy(a, b); folgenden Text macht: {}(a, b); Welchen Sinn das ergibt, kannst du als Hausaufgabe selbst überlegen
das ist NICHT das was ich meine! die Funktion Function_xy(int a, int b) weiß schon was sie tue. nämlich meineswegens 2 Zahlen addieren und züruckgeben angenommen irgewann in meiner Routine, daß ich so was schreibe: #ifdef Aktiv #define Function_xy {} //ist Function_xy {} == Function_xy(int a, int b)?? #endif
The_Rock wrote: > Hallo Leute, > > ich habe mal eine Frage > was bewikt eigentlich diese #define anweisung ?: > #define Function_xy {} Sie bewirkt das was jeder #define macht. Sie sorgt dafür, dass ab der Stelle an der der #define vorkommt bis zum Ende des Quelltextes, jeglicher Text 'Function_xy' mit dem Text '{}' ersetzt wird. Nicht mehr und nicht weniger. > > wenn ich voher in meiner Routine eine Funktion mit gleicher Name, aber #define wirken ab ihrem Auftreten bis zum Ende des Quelltextes. Was davor war interessiert den #define nicht. Wenn dir das als Antwort nicht reicht, dann stell mal ein möglichst komplettes Beispiel zusammen, welches so durch den Compiler geht.
@The_Rock: Dann verstehst du offenbar deine eigene Frage nicht... Dein letzter Beitrag ist jedenfalls völliger Unsinn. Falls deine Frage ernst gemeint sein sollte: Jeder C-Comiler hat einen Schalter, der ihn dazu veranlaßt, die Ausgabe des Preprocessors in eine Datei auszugeben. Mach das und sieh dir an, was der Compiler aus deinen Eingaben macht.
> das ist NICHT das was ich meine! Es ist aber das, was der Compiler macht. > die Funktion Function_xy(int a, int b) weiß schon was sie tue. Das ist dem #define aber egal. > #ifdef Aktiv > #define Function_xy {} //ist Function_xy {} == Function_xy(int a, int > b)?? > #endif Nochmal: Der Präprozessor ist im Prinzip nur ein automatisierter Texteditor, der den Quelltext vor der Übergabe an den eigentlichen Compiler noch verändert. Ein
1 | #define Function_xy {}
|
sorgt dafür, daß im Quelltext nach diesem #define jedes Vorkommen von "Function_xy" durch "{}" ersetzt wird, bevor es an den Compiler weitergeht. Es macht also aus einem
1 | Function_xy(int a, int b) |
ein
1 | {}(int a, int b) |
Wenn du die Funktion irgendwo aufrufst, z.B. mit
1 | Function_xy(3, 5); |
wird auch dieser Aufruf ersetzt durch:
1 | {}(3, 5); |
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.