Ok, du meinst Compiler Bedingungen, so etwas wie {$IFDEF ButterByTheFish} ...{$ENDIF}.
Unter Compiler-Switches verstehe ich dcc32.exe /Switch1.
Wenn der Compiler meckert, dass es keine Forward Deklaration gibt, du die aber im Code siehst. Liegt es vermutlich daran,
das der Compiler deine
Unit mit der neuen Bedingung nicht neu kompiliert, da das Datum der *.PAS = *.DCU ist.
Neue Compiler-Bedingungen führen nicht zum Neukompilieren der gesamten Units. Das muss man selbst anstoßen.
Wird also eine
Unit mit von 2 Projekten mit unterschiedlichen Bedingungen, läuft man unweigerlich zu diesem Problem.