Udover Bertels kommentar kan det også bruges til betinget compilering:
#include <stdio.h>
int main(int argc, char ** argv) {
#if defined(HELLO)
printf("Hello, World!\\n");
#elif defined(GOODBYE)
printf("Goodbye, World!\\n");
#endif
return 0;
}
Jeg kan så lave mine defines på compile time:
robert-debian:~/code/ToolboxNG $ gcc -o hello -DHELLO test.c
robert-debian:~/code/ToolboxNG $ gcc -o bye -DGOODBYE test.c
robert-debian:~/code/ToolboxNG $ ./hello
Hello, World!
robert-debian:~/code/ToolboxNG $ ./bye
Goodbye, World!
robert-debian:~/code/ToolboxNG $
I Bertels beskrivelse fungerer #define nærmest som en copy/paste funktion. Koden som er defineret i din define bliver kopieret ind, hvor den bruges.