Pebi, die ganzen #-Anweisungen sind für den Kompiler
In deinem Beispiel generiert er den Code für receive, und "send" ignoriert er.
Zur Laufzeit kannst du da nix mehr machen
das sind sog. "Präprozessor" Anweisungen.
Brauchen tut man das, um das Programm z.B. je nach #define zu variieren.
Beispiel:
#define _mega32
..
..
#ifdef _mega32
printf("Ich bin ein 32\n");
#else
printf("Ich bin ein was anderes\n");
#endif

D.h. im HEX file ist entweder den eine Printf ODER der andere

klaro ?