Hi oberallgeier,
schau dir das mal an:
Code:
#define SetBit(ADDR,BIT) (ADDR |= (1<<BIT))
#define WasBinIch_1 42
#define WasBinIch_2 SetBit(PORTA,PA0)
#define WasBinIch_3() SetBit(PORTA,PA1)
void main()
{
int x = WasBinIch_1; // Hier ist klar, das du eine Variable/einen Wert verwendest
WasBinIch_3(); // Hier ist klar, dass was passiert (es sieht wie ein Funktionsaufruf aus)
WasBinIch_2; // Was ist das?
// Geh' mal von einem Programm aus wo du grade in Zeile 1580
// ließt und nicht das #define-Statement im Blick hast ... ;-)
}
In der stdio.h findest du unteranderem diese Zeile:
"#define getchar() fgetc(stdin)", vermutlich aus den selben Gründen wie oben.
[EDIT] Kleiner Nachtrag: IBM schreibt hierzu: "An empty formal parameter list is legal: such a macro can be used to simulate a function that takes no arguments." http://publib.boulder.ibm.com/infoce...rc09cpxmac.htm
Wenn ich Zeit habe, bastel ich mal ein kleines Beispiel wie ich das mit den Structs meinte
-Crazy
Lesezeichen