compiler directives : testing a macro value

#ifdef means if defined

if you want to test values, you use #if - Here is an example

#define debug 2

#if debug > 2
#define printdebug Serial.println("DEBUG > 2")
#else
#define printdebug Serial.println("DEBUG <= 2")
#endif

void setup() {
  Serial.begin(115200);
  printdebug;
}

void loop() {}

configured this way the console will display "DEBUG <= 2" and if you set debug to 5, then you'll see the other message

if you studied some "old" libraries they have been modified at some point to accommodate for Arduino.h and they start with

#if defined(ARDUINO) && ARDUINO >= 100
  #include "Arduino.h"
#else
  #include "WProgram.h"
#endif

this tests the version number of ARDUINO and if it's greater than 100 (or equal) then it includes Arduino.h otherwise WProgram.h