Wenn man
#define I2C_LCD_vorhanden
schreibt, ist es definiert (wie define schon sagt). Welchen Wert es ggfs. noch bekommt (true, false, 4711, "Ich bin ein String") spielt da keine Rolle.
Aber nimmt doch statt #ifdef mal den Bruder #if. Syntax siehe hier http://www2.informatik.uni-halle.de/lehre/c/c_if.html oder auch
hier http://msdn.microsoft.com/en-us/library/ew2hz0yd(v=vs.80).aspx
Das folgende müsste dann funktionieren:
#define I2C_LCD_Vorhanden false // oder alternativ #define I2C_LCD_Vorhanden true
#if I2C_LCD_vorhanden == true // #if I2C_LCD_Vorhanden reicht auch bei boolschen Werten
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#else // false
// wenn nicht true, wird nichts eingefügt; #else-Zweig kann dann natürlich weggelassen werden
#endif
Ich kanns im Augenblick nicht ausprobieren, aber so sollte es gehen.
Wolfgang