diff --git a/Mac/Modules/Nav.c b/Mac/Modules/Nav.c
index c86a5ef..7a8abc4 100644
--- a/Mac/Modules/Nav.c
+++ b/Mac/Modules/Nav.c
@@ -350,7 +350,7 @@
 				PyErr_Mac(ErrorObject, err);
 				return NULL;
 			}
-#ifdef TARGET_API_MAC_CARBON
+#if TARGET_API_MAC_CARBON
 			if (err=AEGetDescData(&desc, &fss, sizeof(FSSpec))) {
 				Py_DECREF(rv);
 				PyErr_Mac(ErrorObject, err);
diff --git a/Mac/Modules/ae/AEmodule.c b/Mac/Modules/ae/AEmodule.c
index aee36fa..435560a 100644
--- a/Mac/Modules/ae/AEmodule.c
+++ b/Mac/Modules/ae/AEmodule.c
@@ -761,7 +761,7 @@
 		return PyMac_BuildOSType(self->ob_itself.descriptorType);
 	if (strcmp(name, "data") == 0) {
 		PyObject *res;
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 		char state;
 		state = HGetState(self->ob_itself.dataHandle);
 		HLock(self->ob_itself.dataHandle);
diff --git a/Mac/Modules/ae/aesupport.py b/Mac/Modules/ae/aesupport.py
index 5ca2c48..9423312 100644
--- a/Mac/Modules/ae/aesupport.py
+++ b/Mac/Modules/ae/aesupport.py
@@ -178,7 +178,7 @@
 	return PyMac_BuildOSType(self->ob_itself.descriptorType);
 if (strcmp(name, "data") == 0) {
 	PyObject *res;
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	char state;
 	state = HGetState(self->ob_itself.dataHandle);
 	HLock(self->ob_itself.dataHandle);
diff --git a/Mac/Modules/cm/Cmmodule.c b/Mac/Modules/cm/Cmmodule.c
index b8a6216..79a1b7c 100644
--- a/Mac/Modules/cm/Cmmodule.c
+++ b/Mac/Modules/cm/Cmmodule.c
@@ -160,7 +160,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *CmpInstObj_GetComponentInstanceA5(_self, _args)
 	ComponentInstanceObject *_self;
@@ -177,7 +177,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *CmpInstObj_SetComponentInstanceA5(_self, _args)
 	ComponentInstanceObject *_self;
@@ -256,12 +256,12 @@
 	{"SetComponentInstanceStorage", (PyCFunction)CmpInstObj_SetComponentInstanceStorage, 1,
 	 "(Handle theStorage) -> None"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"GetComponentInstanceA5", (PyCFunction)CmpInstObj_GetComponentInstanceA5, 1,
 	 "() -> (long _rv)"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SetComponentInstanceA5", (PyCFunction)CmpInstObj_SetComponentInstanceA5, 1,
 	 "(long theA5) -> None"},
 #endif
diff --git a/Mac/Modules/cm/cmscan.py b/Mac/Modules/cm/cmscan.py
index 6298f75..1c36eaa 100644
--- a/Mac/Modules/cm/cmscan.py
+++ b/Mac/Modules/cm/cmscan.py
@@ -60,7 +60,7 @@
 
 	def makegreylist(self):
 		return [
-			('#ifndef TARGET_API_MAC_CARBON', [
+			('#if !TARGET_API_MAC_CARBON', [
 				'SetComponentInstanceA5',
 				'GetComponentInstanceA5',
 			])]
diff --git a/Mac/Modules/ctl/Ctlmodule.c b/Mac/Modules/ctl/Ctlmodule.c
index 6944fb3..6007220 100644
--- a/Mac/Modules/ctl/Ctlmodule.c
+++ b/Mac/Modules/ctl/Ctlmodule.c
@@ -14,7 +14,7 @@
 
 #define as_Control(h) ((ControlHandle)h)
 #define as_Resource(ctl) ((Handle)ctl)
-#ifdef TARGET_API_MAC_CARBON
+#if TARGET_API_MAC_CARBON
 #define GetControlRect(ctl, rectp) GetControlBounds(ctl, rectp)
 #else
 #define GetControlRect(ctl, rectp) (*(rectp) = ((*(ctl))->contrlRect))
@@ -49,7 +49,7 @@
 /* TrackControl and HandleControlClick callback support */
 static PyObject *tracker;
 static ControlActionUPP mytracker_upp;
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 static ControlUserPaneDrawUPP mydrawproc_upp;
 static ControlUserPaneIdleUPP myidleproc_upp;
 static ControlUserPaneHitTestUPP myhittestproc_upp;
@@ -58,7 +58,7 @@
 
 extern int settrackfunc(PyObject *); 	/* forward */
 extern void clrtrackfunc(void);	/* forward */
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 staticforward int setcallback(PyObject *, OSType, PyObject *, UniversalProcPtr *);
 #endif
 
@@ -780,7 +780,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *CtlObj_GetAuxiliaryControlRecord(_self, _args)
 	ControlObject *_self;
@@ -800,7 +800,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *CtlObj_SetControlColor(_self, _args)
 	ControlObject *_self;
@@ -819,7 +819,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *CtlObj_GetBevelButtonMenuValue(_self, _args)
 	ControlObject *_self;
@@ -839,7 +839,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *CtlObj_SetBevelButtonMenuValue(_self, _args)
 	ControlObject *_self;
@@ -860,7 +860,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *CtlObj_GetBevelButtonMenuHandle(_self, _args)
 	ControlObject *_self;
@@ -880,7 +880,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *CtlObj_SetBevelButtonTransform(_self, _args)
 	ControlObject *_self;
@@ -901,7 +901,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *CtlObj_SetImageWellTransform(_self, _args)
 	ControlObject *_self;
@@ -922,7 +922,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *CtlObj_GetTabContentRect(_self, _args)
 	ControlObject *_self;
@@ -942,7 +942,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *CtlObj_SetTabEnabled(_self, _args)
 	ControlObject *_self;
@@ -966,7 +966,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *CtlObj_SetDisclosureTriangleLastValue(_self, _args)
 	ControlObject *_self;
@@ -1421,7 +1421,7 @@
 
 }
 
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 
 static PyObject *CtlObj_SetControlDataCallback(_self, _args)
 	ControlObject *_self;
@@ -1457,7 +1457,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 
 static PyObject *CtlObj_GetPopupData(_self, _args)
 	ControlObject *_self;
@@ -1480,7 +1480,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 
 static PyObject *CtlObj_SetPopupData(_self, _args)
 	ControlObject *_self;
@@ -1591,52 +1591,52 @@
 	{"GetControlReference", (PyCFunction)CtlObj_GetControlReference, 1,
 	 "() -> (SInt32 _rv)"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"GetAuxiliaryControlRecord", (PyCFunction)CtlObj_GetAuxiliaryControlRecord, 1,
 	 "() -> (Boolean _rv, AuxCtlHandle acHndl)"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SetControlColor", (PyCFunction)CtlObj_SetControlColor, 1,
 	 "(CCTabHandle newColorTable) -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"GetBevelButtonMenuValue", (PyCFunction)CtlObj_GetBevelButtonMenuValue, 1,
 	 "() -> (SInt16 outValue)"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SetBevelButtonMenuValue", (PyCFunction)CtlObj_SetBevelButtonMenuValue, 1,
 	 "(SInt16 inValue) -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"GetBevelButtonMenuHandle", (PyCFunction)CtlObj_GetBevelButtonMenuHandle, 1,
 	 "() -> (MenuHandle outHandle)"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SetBevelButtonTransform", (PyCFunction)CtlObj_SetBevelButtonTransform, 1,
 	 "(IconTransformType transform) -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SetImageWellTransform", (PyCFunction)CtlObj_SetImageWellTransform, 1,
 	 "(IconTransformType inTransform) -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"GetTabContentRect", (PyCFunction)CtlObj_GetTabContentRect, 1,
 	 "() -> (Rect outContentRect)"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SetTabEnabled", (PyCFunction)CtlObj_SetTabEnabled, 1,
 	 "(SInt16 inTabToHilite, Boolean inEnabled) -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SetDisclosureTriangleLastValue", (PyCFunction)CtlObj_SetDisclosureTriangleLastValue, 1,
 	 "(SInt16 inValue) -> None"},
 #endif
@@ -1677,17 +1677,17 @@
 	{"GetControlDataHandle", (PyCFunction)CtlObj_GetControlDataHandle, 1,
 	 "(part, type) -> ResObj"},
 
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 	{"SetControlDataCallback", (PyCFunction)CtlObj_SetControlDataCallback, 1,
 	 "(callbackfunc) -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 	{"GetPopupData", (PyCFunction)CtlObj_GetPopupData, 1,
 	 NULL},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 	{"SetPopupData", (PyCFunction)CtlObj_SetPopupData, 1,
 	 NULL},
 #endif
@@ -2179,7 +2179,7 @@
 		PySys_WriteStderr("TrackControl or HandleControlClick: exception in tracker function\n");
 }
 
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 static int
 setcallback(myself, which, callback, uppp)
 	PyObject *myself;
@@ -2307,7 +2307,7 @@
 
 
 	mytracker_upp = NewControlActionProc(mytracker);
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 	mydrawproc_upp = NewControlUserPaneDrawProc(mydrawproc);
 	myidleproc_upp = NewControlUserPaneIdleProc(myidleproc);
 	myhittestproc_upp = NewControlUserPaneHitTestProc(myhittestproc);
diff --git a/Mac/Modules/ctl/ctlscan.py b/Mac/Modules/ctl/ctlscan.py
index dc7d760..9f9b20b 100644
--- a/Mac/Modules/ctl/ctlscan.py
+++ b/Mac/Modules/ctl/ctlscan.py
@@ -81,7 +81,7 @@
 
 	def makegreylist(self):
 		return [
-			('#ifndef TARGET_API_MAC_CARBON', [
+			('#if !TARGET_API_MAC_CARBON', [
 				'GetAuxiliaryControlRecord',
 				'SetControlColor',
 				# These have suddenly disappeared in UH 3.3.2...
diff --git a/Mac/Modules/ctl/ctlsupport.py b/Mac/Modules/ctl/ctlsupport.py
index 25cd520..064e1c5 100644
--- a/Mac/Modules/ctl/ctlsupport.py
+++ b/Mac/Modules/ctl/ctlsupport.py
@@ -48,7 +48,7 @@
 
 #define as_Control(h) ((ControlHandle)h)
 #define as_Resource(ctl) ((Handle)ctl)
-#ifdef TARGET_API_MAC_CARBON
+#if TARGET_API_MAC_CARBON
 #define GetControlRect(ctl, rectp) GetControlBounds(ctl, rectp)
 #else
 #define GetControlRect(ctl, rectp) (*(rectp) = ((*(ctl))->contrlRect))
@@ -83,7 +83,7 @@
 /* TrackControl and HandleControlClick callback support */
 static PyObject *tracker;
 static ControlActionUPP mytracker_upp;
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 static ControlUserPaneDrawUPP mydrawproc_upp;
 static ControlUserPaneIdleUPP myidleproc_upp;
 static ControlUserPaneHitTestUPP myhittestproc_upp;
@@ -92,7 +92,7 @@
 
 extern int settrackfunc(PyObject *); 	/* forward */
 extern void clrtrackfunc(void);	/* forward */
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 staticforward int setcallback(PyObject *, OSType, PyObject *, UniversalProcPtr *);
 #endif
 """
@@ -166,7 +166,7 @@
 		PySys_WriteStderr("TrackControl or HandleControlClick: exception in tracker function\\n");
 }
 
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 static int
 setcallback(myself, which, callback, uppp)
 	PyObject *myself;
@@ -288,7 +288,7 @@
 
 initstuff = initstuff + """
 mytracker_upp = NewControlActionProc(mytracker);
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 mydrawproc_upp = NewControlUserPaneDrawProc(mydrawproc);
 myidleproc_upp = NewControlUserPaneIdleProc(myidleproc);
 myhittestproc_upp = NewControlUserPaneHitTestProc(myhittestproc);
@@ -570,7 +570,7 @@
 return _res;
 """
 
-f = ManualGenerator("SetControlDataCallback", setcontroldatacallback_body, condition="#ifndef TARGET_API_MAC_CARBON_NOTYET");
+f = ManualGenerator("SetControlDataCallback", setcontroldatacallback_body, condition="#if !TARGET_API_MAC_CARBON_NOTYET");
 f.docstring = lambda: "(callbackfunc) -> None"
 object.add(f)
 
@@ -588,7 +588,7 @@
 HUnlock((Handle)hdl);
 return _res;
 """
-f = ManualGenerator("GetPopupData", getpopupdata_body, condition="#ifndef TARGET_API_MAC_CARBON_NOTYET")
+f = ManualGenerator("GetPopupData", getpopupdata_body, condition="#if !TARGET_API_MAC_CARBON_NOTYET")
 object.add(f)
 
 setpopupdata_body = """
@@ -608,7 +608,7 @@
 Py_INCREF(Py_None);
 return Py_None;
 """
-f = ManualGenerator("SetPopupData", setpopupdata_body, condition="#ifndef TARGET_API_MAC_CARBON_NOTYET")
+f = ManualGenerator("SetPopupData", setpopupdata_body, condition="#if !TARGET_API_MAC_CARBON_NOTYET")
 object.add(f)
 
 
diff --git a/Mac/Modules/dlg/Dlgmodule.c b/Mac/Modules/dlg/Dlgmodule.c
index eb9efab..827f7eb 100644
--- a/Mac/Modules/dlg/Dlgmodule.c
+++ b/Mac/Modules/dlg/Dlgmodule.c
@@ -705,7 +705,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *DlgObj_SetGrafPortOfDialog(_self, _args)
 	DialogObject *_self;
@@ -787,7 +787,7 @@
 	{"GetDialogKeyboardFocusItem", (PyCFunction)DlgObj_GetDialogKeyboardFocusItem, 1,
 	 "() -> (SInt16 _rv)"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SetGrafPortOfDialog", (PyCFunction)DlgObj_SetGrafPortOfDialog, 1,
 	 "() -> None"},
 #endif
diff --git a/Mac/Modules/dlg/dlgscan.py b/Mac/Modules/dlg/dlgscan.py
index a9d6fc4..e49dbdd 100644
--- a/Mac/Modules/dlg/dlgscan.py
+++ b/Mac/Modules/dlg/dlgscan.py
@@ -57,7 +57,7 @@
 
 	def makegreylist(self):
 		return [
-			('#ifndef TARGET_API_MAC_CARBON', [
+			('#if !TARGET_API_MAC_CARBON', [
 				'SetGrafPortOfDialog',
 			])]
 			
diff --git a/Mac/Modules/dlg/dlgsupport.py b/Mac/Modules/dlg/dlgsupport.py
index 11873cf..f5b86f5 100644
--- a/Mac/Modules/dlg/dlgsupport.py
+++ b/Mac/Modules/dlg/dlgsupport.py
@@ -165,7 +165,7 @@
 f = Method(SInt16, 'GetDialogKeyboardFocusItem', (DialogRef, 'dialog', InMode))
 object.add(f)
 f = Method(void, 'SetGrafPortOfDialog', (DialogRef, 'dialog', InMode), 
-	condition='#ifndef TARGET_API_MAC_CARBON')
+	condition='#if !TARGET_API_MAC_CARBON')
 object.add(f)
 
 setuseritembody = """
diff --git a/Mac/Modules/evt/Evtmodule.c b/Mac/Modules/evt/Evtmodule.c
index b825cbf..093c470 100644
--- a/Mac/Modules/evt/Evtmodule.c
+++ b/Mac/Modules/evt/Evtmodule.c
@@ -198,7 +198,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Evt_OSEventAvail(_self, _args)
 	PyObject *_self;
@@ -220,7 +220,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Evt_GetOSEvent(_self, _args)
 	PyObject *_self;
@@ -260,7 +260,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Evt_SystemClick(_self, _args)
 	PyObject *_self;
@@ -281,7 +281,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Evt_SystemTask(_self, _args)
 	PyObject *_self;
@@ -297,7 +297,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Evt_SystemEvent(_self, _args)
 	PyObject *_self;
@@ -370,29 +370,29 @@
 	{"PostEvent", (PyCFunction)Evt_PostEvent, 1,
 	 "(EventKind eventNum, UInt32 eventMsg) -> None"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"OSEventAvail", (PyCFunction)Evt_OSEventAvail, 1,
 	 "(EventMask mask) -> (Boolean _rv, EventRecord theEvent)"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"GetOSEvent", (PyCFunction)Evt_GetOSEvent, 1,
 	 "(EventMask mask) -> (Boolean _rv, EventRecord theEvent)"},
 #endif
 	{"FlushEvents", (PyCFunction)Evt_FlushEvents, 1,
 	 "(EventMask whichMask, EventMask stopMask) -> None"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SystemClick", (PyCFunction)Evt_SystemClick, 1,
 	 "(EventRecord theEvent, WindowPtr theWindow) -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SystemTask", (PyCFunction)Evt_SystemTask, 1,
 	 "() -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SystemEvent", (PyCFunction)Evt_SystemEvent, 1,
 	 "(EventRecord theEvent) -> (Boolean _rv)"},
 #endif
diff --git a/Mac/Modules/evt/evtscan.py b/Mac/Modules/evt/evtscan.py
index 597cf9b..3695440 100644
--- a/Mac/Modules/evt/evtscan.py
+++ b/Mac/Modules/evt/evtscan.py
@@ -37,7 +37,7 @@
 
 	def makegreylist(self):
 		return [
-			('#ifndef TARGET_API_MAC_CARBON', [
+			('#if !TARGET_API_MAC_CARBON', [
 				'SystemEvent',
 				'SystemTask',
 				'SystemClick',
diff --git a/Mac/Modules/fm/Fmmodule.c b/Mac/Modules/fm/Fmmodule.c
index 3b30218..6d1c507 100644
--- a/Mac/Modules/fm/Fmmodule.c
+++ b/Mac/Modules/fm/Fmmodule.c
@@ -45,7 +45,7 @@
 
 static PyObject *Fm_Error;
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Fm_InitFonts(_self, _args)
 	PyObject *_self;
@@ -114,7 +114,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Fm_SetFontLock(_self, _args)
 	PyObject *_self;
@@ -267,7 +267,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Fm_FlushFonts(_self, _args)
 	PyObject *_self;
@@ -351,7 +351,7 @@
 
 static PyMethodDef Fm_methods[] = {
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"InitFonts", (PyCFunction)Fm_InitFonts, 1,
 	 "() -> None"},
 #endif
@@ -362,7 +362,7 @@
 	{"RealFont", (PyCFunction)Fm_RealFont, 1,
 	 "(short fontNum, short size) -> (Boolean _rv)"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SetFontLock", (PyCFunction)Fm_SetFontLock, 1,
 	 "(Boolean lockFlag) -> None"},
 #endif
@@ -385,7 +385,7 @@
 	{"GetPreserveGlyph", (PyCFunction)Fm_GetPreserveGlyph, 1,
 	 "() -> (Boolean _rv)"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"FlushFonts", (PyCFunction)Fm_FlushFonts, 1,
 	 "() -> None"},
 #endif
diff --git a/Mac/Modules/fm/fmscan.py b/Mac/Modules/fm/fmscan.py
index 3539b6d..9c9cab9 100644
--- a/Mac/Modules/fm/fmscan.py
+++ b/Mac/Modules/fm/fmscan.py
@@ -40,7 +40,7 @@
 
 	def makegreylist(self):
 		return [
-			('#ifndef TARGET_API_MAC_CARBON', [
+			('#if !TARGET_API_MAC_CARBON', [
 				'InitFonts',
 				'SetFontLock',
 				'FlushFonts',
diff --git a/Mac/Modules/icn/Icnmodule.c b/Mac/Modules/icn/Icnmodule.c
index 6ed20dd..6cbb936 100644
--- a/Mac/Modules/icn/Icnmodule.c
+++ b/Mac/Modules/icn/Icnmodule.c
@@ -564,7 +564,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Icn_IconServicesTerminate(_self, _args)
 	PyObject *_self;
@@ -1300,7 +1300,7 @@
 	{"PlotCIconHandle", (PyCFunction)Icn_PlotCIconHandle, 1,
 	 "(Rect theRect, IconAlignmentType align, IconTransformType transform, CIconHandle theCIcon) -> None"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"IconServicesTerminate", (PyCFunction)Icn_IconServicesTerminate, 1,
 	 "() -> None"},
 #endif
diff --git a/Mac/Modules/icn/icnscan.py b/Mac/Modules/icn/icnscan.py
index c2af061..93d27d0 100644
--- a/Mac/Modules/icn/icnscan.py
+++ b/Mac/Modules/icn/icnscan.py
@@ -47,7 +47,7 @@
 
 	def makegreylist(self):
 		return [
-			('#ifndef TARGET_API_MAC_CARBON', [
+			('#if !TARGET_API_MAC_CARBON', [
 				'IconServicesTerminate',
 			])]
 
diff --git a/Mac/Modules/macconfig.c b/Mac/Modules/macconfig.c
index 64ec6fa..c53ff43 100644
--- a/Mac/Modules/macconfig.c
+++ b/Mac/Modules/macconfig.c
@@ -228,13 +228,13 @@
 	{"List", initList},
 	{"Snd", initSnd},
 	{"Sndihooks", initSndihooks},
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 	/* Carbon scrap manager is completely different */
 	{"Scrap", initScrap},
 #endif
 	{"TE", initTE},
 	{"ColorPicker", initColorPicker},
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"Help", initHelp},
 	{"Printing", initPrinting},
 #endif
diff --git a/Mac/Modules/macfsmodule.c b/Mac/Modules/macfsmodule.c
index fa832f3..ca8b767 100644
--- a/Mac/Modules/macfsmodule.c
+++ b/Mac/Modules/macfsmodule.c
@@ -710,7 +710,7 @@
 	return Py_BuildValue("Oii", newmfssobject(&fss), (int)isfolder, (int)wasaliased);
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 static PyObject *
 mfs_StandardGetFile(self, args)
 	PyObject *self;	/* Not used */
@@ -854,7 +854,7 @@
 	return (PyObject *)newmfsaobject((AliasHandle)h);
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 static PyObject *
 mfs_GetDirectory(self, args)
 	PyObject *self;	/* Not used */
@@ -951,7 +951,7 @@
 
 static struct PyMethodDef mfs_methods[] = {
 	{"ResolveAliasFile",	mfs_ResolveAliasFile,	1},
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"StandardGetFile",		mfs_StandardGetFile,	1},
 	{"PromptGetFile",		mfs_PromptGetFile,		1},
 	{"StandardPutFile",		mfs_StandardPutFile,	1},
diff --git a/Mac/Modules/macmodule.c b/Mac/Modules/macmodule.c
index 600b9fc..d553f30 100644
--- a/Mac/Modules/macmodule.c
+++ b/Mac/Modules/macmodule.c
@@ -31,7 +31,7 @@
 #include <string.h>
 #include <errno.h>
 
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 /* XXXX Skip for Carbon, for now */
 #include "macstat.h"
 #endif
@@ -51,7 +51,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #else /* USE_GUSI */
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 #define stat macstat
 #endif
 #endif /* USE_GUSI */
@@ -259,7 +259,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 static PyObject *
 mac_getbootvol(self, args)
 	PyObject *self;
@@ -499,7 +499,7 @@
 }
 #endif /* WEHAVE_FSTAT */
 
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 static PyObject *
 mac_xstat(self, args)
 	PyObject *self;
@@ -609,7 +609,7 @@
 #ifdef WEHAVE_FSTAT
 	{"fstat",	mac_fstat},
 #endif
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"getbootvol",	mac_getbootvol}, /* non-standard */
 #endif
 	{"getcwd",	mac_getcwd},
@@ -621,7 +621,7 @@
 	{"rename",	mac_rename},
 	{"rmdir",	mac_rmdir},
 	{"stat",	mac_stat},
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 	{"xstat",	mac_xstat},
 #endif
 	{"sync",	mac_sync},
diff --git a/Mac/Modules/macosmodule.c b/Mac/Modules/macosmodule.c
index 07a2e47..d373b7e 100644
--- a/Mac/Modules/macosmodule.c
+++ b/Mac/Modules/macosmodule.c
@@ -359,7 +359,7 @@
 #include <EPPC.h>
 #include <Events.h>
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 static char accepthle_doc[] = "Get arguments of pending high-level event";
 
 static PyObject *
@@ -677,7 +677,7 @@
 }
 
 static PyMethodDef MacOS_Methods[] = {
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"AcceptHighLevelEvent",	MacOS_AcceptHighLevelEvent, 1,	accepthle_doc},
 #endif
 	{"GetCreatorAndType",		MacOS_GetCreatorAndType, 1,	getcrtp_doc},
diff --git a/Mac/Modules/menu/Menumodule.c b/Mac/Modules/menu/Menumodule.c
index 23803e8..a47c88a 100644
--- a/Mac/Modules/menu/Menumodule.c
+++ b/Mac/Modules/menu/Menumodule.c
@@ -82,7 +82,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *MenuObj_CountMItems(_self, _args)
 	MenuObject *_self;
@@ -377,7 +377,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *MenuObj_CheckItem(_self, _args)
 	MenuObject *_self;
@@ -584,7 +584,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *MenuObj_DisableItem(_self, _args)
 	MenuObject *_self;
@@ -603,7 +603,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *MenuObj_EnableItem(_self, _args)
 	MenuObject *_self;
@@ -915,7 +915,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *MenuObj_SetMenuItemRefCon2(_self, _args)
 	MenuObject *_self;
@@ -939,7 +939,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *MenuObj_GetMenuItemRefCon2(_self, _args)
 	MenuObject *_self;
@@ -1172,7 +1172,7 @@
 	{"CalcMenuSize", (PyCFunction)MenuObj_CalcMenuSize, 1,
 	 "() -> None"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"CountMItems", (PyCFunction)MenuObj_CountMItems, 1,
 	 "() -> (short _rv)"},
 #endif
@@ -1207,7 +1207,7 @@
 	{"MacInsertMenu", (PyCFunction)MenuObj_MacInsertMenu, 1,
 	 "(short beforeID) -> None"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"CheckItem", (PyCFunction)MenuObj_CheckItem, 1,
 	 "(short item, Boolean checked) -> None"},
 #endif
@@ -1232,12 +1232,12 @@
 	{"GetItemStyle", (PyCFunction)MenuObj_GetItemStyle, 1,
 	 "(short item) -> (Style chStyle)"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"DisableItem", (PyCFunction)MenuObj_DisableItem, 1,
 	 "(short item) -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"EnableItem", (PyCFunction)MenuObj_EnableItem, 1,
 	 "(short item) -> None"},
 #endif
@@ -1270,12 +1270,12 @@
 	{"GetMenuItemRefCon", (PyCFunction)MenuObj_GetMenuItemRefCon, 1,
 	 "(SInt16 inItem) -> (UInt32 outRefCon)"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SetMenuItemRefCon2", (PyCFunction)MenuObj_SetMenuItemRefCon2, 1,
 	 "(SInt16 inItem, UInt32 inRefCon2) -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"GetMenuItemRefCon2", (PyCFunction)MenuObj_GetMenuItemRefCon2, 1,
 	 "(SInt16 inItem) -> (UInt32 outRefCon2)"},
 #endif
@@ -1345,7 +1345,7 @@
 /* ---------------------- End object type Menu ---------------------- */
 
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Menu_InitProcMenu(_self, _args)
 	PyObject *_self;
@@ -1363,7 +1363,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Menu_InitMenus(_self, _args)
 	PyObject *_self;
@@ -1620,7 +1620,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Menu_SetMenuFlash(_self, _args)
 	PyObject *_self;
@@ -1653,7 +1653,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Menu_SystemEdit(_self, _args)
 	PyObject *_self;
@@ -1672,7 +1672,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Menu_SystemMenu(_self, _args)
 	PyObject *_self;
@@ -1779,7 +1779,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Menu_OpenDeskAcc(_self, _args)
 	PyObject *_self;
@@ -1859,12 +1859,12 @@
 
 static PyMethodDef Menu_methods[] = {
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"InitProcMenu", (PyCFunction)Menu_InitProcMenu, 1,
 	 "(short resID) -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"InitMenus", (PyCFunction)Menu_InitMenus, 1,
 	 "() -> None"},
 #endif
@@ -1901,19 +1901,19 @@
 	{"ClearMenuBar", (PyCFunction)Menu_ClearMenuBar, 1,
 	 "() -> None"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SetMenuFlash", (PyCFunction)Menu_SetMenuFlash, 1,
 	 "(short count) -> None"},
 #endif
 	{"FlashMenuBar", (PyCFunction)Menu_FlashMenuBar, 1,
 	 "(short menuID) -> None"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SystemEdit", (PyCFunction)Menu_SystemEdit, 1,
 	 "(short editCmd) -> (Boolean _rv)"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SystemMenu", (PyCFunction)Menu_SystemMenu, 1,
 	 "(long menuResult) -> None"},
 #endif
@@ -1930,7 +1930,7 @@
 	{"IsShowContextualMenuClick", (PyCFunction)Menu_IsShowContextualMenuClick, 1,
 	 "(EventRecord inEvent) -> (Boolean _rv)"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"OpenDeskAcc", (PyCFunction)Menu_OpenDeskAcc, 1,
 	 "(Str255 name) -> None"},
 #endif
diff --git a/Mac/Modules/menu/menuedit.py b/Mac/Modules/menu/menuedit.py
index f4b5756..5887193 100644
--- a/Mac/Modules/menu/menuedit.py
+++ b/Mac/Modules/menu/menuedit.py
@@ -1,6 +1,6 @@
 f = Function(void, 'OpenDeskAcc',
 	(Str255, 'name', InMode),
-	condition='#ifndef TARGET_API_MAC_CARBON'
+	condition='#if !TARGET_API_MAC_CARBON'
 )
 functions.append(f)
 
diff --git a/Mac/Modules/menu/menuscan.py b/Mac/Modules/menu/menuscan.py
index 2275683..965172a 100644
--- a/Mac/Modules/menu/menuscan.py
+++ b/Mac/Modules/menu/menuscan.py
@@ -42,7 +42,7 @@
 
 	def makegreylist(self):
 		return [
-			('#ifndef TARGET_API_MAC_CARBON', [
+			('#if !TARGET_API_MAC_CARBON', [
 				'GetMenuItemRefCon2',
 				'SetMenuItemRefCon2',
 				'EnableItem',
diff --git a/Mac/Modules/qd/Qdmodule.c b/Mac/Modules/qd/Qdmodule.c
index 9d844b8..c4a7ccd 100644
--- a/Mac/Modules/qd/Qdmodule.c
+++ b/Mac/Modules/qd/Qdmodule.c
@@ -105,7 +105,7 @@
 	GrafPortObject *self;
 	char *name;
 {
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 			{	CGrafPtr itself_color = (CGrafPtr)self->ob_itself;
 			
@@ -390,7 +390,7 @@
 	QDGlobalsAccessObject *self;
 	char *name;
 {
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 		if ( strcmp(name, "arrow") == 0 )
 			return PyString_FromStringAndSize((char *)&qd.arrow, sizeof(qd.arrow));
diff --git a/Mac/Modules/qd/qdsupport.py b/Mac/Modules/qd/qdsupport.py
index 1c0f6c3..d493574 100644
--- a/Mac/Modules/qd/qdsupport.py
+++ b/Mac/Modules/qd/qdsupport.py
@@ -130,7 +130,7 @@
 		Output("return 1;")
 		OutRbrace()
 	def outputGetattrHook(self):
-		Output("#ifndef TARGET_API_MAC_CARBON")
+		Output("#if !TARGET_API_MAC_CARBON")
 		Output("""
 		{	CGrafPtr itself_color = (CGrafPtr)self->ob_itself;
 		
@@ -259,7 +259,7 @@
 		pass
 
 	def outputGetattrHook(self):
-		Output("#ifndef TARGET_API_MAC_CARBON")
+		Output("#if !TARGET_API_MAC_CARBON")
 		Output("""
 	if ( strcmp(name, "arrow") == 0 )
 		return PyString_FromStringAndSize((char *)&qd.arrow, sizeof(qd.arrow));
diff --git a/Mac/Modules/qt/Qtmodule.c b/Mac/Modules/qt/Qtmodule.c
index 4899715..7084216 100644
--- a/Mac/Modules/qt/Qtmodule.c
+++ b/Mac/Modules/qt/Qtmodule.c
@@ -6182,7 +6182,7 @@
 /* --------------------- End object type Movie ---------------------- */
 
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Qt_CheckQuickTimeRegistration(_self, _args)
 	PyObject *_self;
@@ -7575,7 +7575,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Qt_SpriteMediaGetIndImageProperty(_self, _args)
 	PyObject *_self;
@@ -7772,7 +7772,7 @@
 
 static PyMethodDef Qt_methods[] = {
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"CheckQuickTimeRegistration", (PyCFunction)Qt_CheckQuickTimeRegistration, 1,
 	 "(void * registrationKey, long flags) -> None"},
 #endif
@@ -7897,7 +7897,7 @@
 	{"SpriteMediaGetActionVariable", (PyCFunction)Qt_SpriteMediaGetActionVariable, 1,
 	 "(MediaHandler mh, QTAtomID variableID) -> (ComponentResult _rv, float value)"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SpriteMediaGetIndImageProperty", (PyCFunction)Qt_SpriteMediaGetIndImageProperty, 1,
 	 "(MediaHandler mh, short imageIndex, long imagePropertyType, void * imagePropertyValue) -> (ComponentResult _rv)"},
 #endif
diff --git a/Mac/Modules/qt/qtscan.py b/Mac/Modules/qt/qtscan.py
index d57a32d..27d76be 100644
--- a/Mac/Modules/qt/qtscan.py
+++ b/Mac/Modules/qt/qtscan.py
@@ -65,7 +65,7 @@
 
 	def makegreylist(self):
 		return [
-			('#ifndef TARGET_API_MAC_CARBON', [
+			('#if !TARGET_API_MAC_CARBON', [
 				'SpriteMediaGetIndImageProperty',	# XXXX Why isn't this in carbon?
 				'CheckQuickTimeRegistration',
 			])]
diff --git a/Mac/Modules/res/Resmodule.c b/Mac/Modules/res/Resmodule.c
index 95a82e2..56534d6 100644
--- a/Mac/Modules/res/Resmodule.c
+++ b/Mac/Modules/res/Resmodule.c
@@ -275,7 +275,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *ResObj_RsrcMapEntry(_self, _args)
 	ResourceObject *_self;
@@ -483,7 +483,7 @@
 	{"GetMaxResourceSize", (PyCFunction)ResObj_GetMaxResourceSize, 1,
 	 "() -> (long _rv)"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"RsrcMapEntry", (PyCFunction)ResObj_RsrcMapEntry, 1,
 	 "() -> (long _rv)"},
 #endif
@@ -592,7 +592,7 @@
 /* -------------------- End object type Resource -------------------- */
 
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Res_InitResources(_self, _args)
 	PyObject *_self;
@@ -613,7 +613,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Res_RsrcZoneInit(_self, _args)
 	PyObject *_self;
@@ -688,7 +688,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Res_CreateResFile(_self, _args)
 	PyObject *_self;
@@ -710,7 +710,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Res_OpenResFile(_self, _args)
 	PyObject *_self;
@@ -1173,7 +1173,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Res_RGetResource(_self, _args)
 	PyObject *_self;
@@ -1357,12 +1357,12 @@
 
 static PyMethodDef Res_methods[] = {
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"InitResources", (PyCFunction)Res_InitResources, 1,
 	 "() -> (short _rv)"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"RsrcZoneInit", (PyCFunction)Res_RsrcZoneInit, 1,
 	 "() -> None"},
 #endif
@@ -1373,12 +1373,12 @@
 	{"CurResFile", (PyCFunction)Res_CurResFile, 1,
 	 "() -> (short _rv)"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"CreateResFile", (PyCFunction)Res_CreateResFile, 1,
 	 "(Str255 fileName) -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"OpenResFile", (PyCFunction)Res_OpenResFile, 1,
 	 "(Str255 fileName) -> (short _rv)"},
 #endif
@@ -1425,7 +1425,7 @@
 	{"OpenRFPerm", (PyCFunction)Res_OpenRFPerm, 1,
 	 "(Str255 fileName, short vRefNum, SignedByte permission) -> (short _rv)"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"RGetResource", (PyCFunction)Res_RGetResource, 1,
 	 "(ResType theType, short theID) -> (Handle _rv)"},
 #endif
diff --git a/Mac/Modules/res/resscan.py b/Mac/Modules/res/resscan.py
index 18499e3..b417cd7 100644
--- a/Mac/Modules/res/resscan.py
+++ b/Mac/Modules/res/resscan.py
@@ -50,7 +50,7 @@
 			
 	def makegreylist(self):
 		return [
-			('#ifndef TARGET_API_MAC_CARBON', [
+			('#if !TARGET_API_MAC_CARBON', [
 				'RGetResource',
 				'OpenResFile',
 				'CreateResFile',
diff --git a/Mac/Modules/snd/Sndmodule.c b/Mac/Modules/snd/Sndmodule.c
index bbd58cd..d230c2b 100644
--- a/Mac/Modules/snd/Sndmodule.c
+++ b/Mac/Modules/snd/Sndmodule.c
@@ -154,7 +154,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *SndCh_SndStartFilePlay(_self, _args)
 	SndChannelObject *_self;
@@ -187,7 +187,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *SndCh_SndPauseFilePlay(_self, _args)
 	SndChannelObject *_self;
@@ -205,7 +205,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *SndCh_SndStopFilePlay(_self, _args)
 	SndChannelObject *_self;
@@ -297,17 +297,17 @@
 	{"SndPlay", (PyCFunction)SndCh_SndPlay, 1,
 	 "(SndListHandle sndHandle, Boolean async) -> None"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SndStartFilePlay", (PyCFunction)SndCh_SndStartFilePlay, 1,
 	 "(short fRefNum, short resNum, long bufferSize, Boolean async) -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SndPauseFilePlay", (PyCFunction)SndCh_SndPauseFilePlay, 1,
 	 "() -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SndStopFilePlay", (PyCFunction)SndCh_SndStopFilePlay, 1,
 	 "(Boolean quietNow) -> None"},
 #endif
@@ -455,7 +455,7 @@
 			self->ob_completion = value;
 			Py_INCREF(value);
 			rv = 1;
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 		} else if (strcmp(name, "interruptRoutine") == 0) {
 			self->ob_spb.completionRoutine = NewSIInterruptProc(SPB_interrupt);
 			self->ob_interrupt = value;
@@ -556,7 +556,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Snd_SndControl(_self, _args)
 	PyObject *_self;
@@ -643,7 +643,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Snd_MACEVersion(_self, _args)
 	PyObject *_self;
@@ -660,7 +660,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Snd_Comp3to1(_self, _args)
 	PyObject *_self;
@@ -707,7 +707,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Snd_Exp1to3(_self, _args)
 	PyObject *_self;
@@ -754,7 +754,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Snd_Comp6to1(_self, _args)
 	PyObject *_self;
@@ -801,7 +801,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Snd_Exp1to6(_self, _args)
 	PyObject *_self;
@@ -1157,7 +1157,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Snd_SPBRecordToFile(_self, _args)
 	PyObject *_self;
@@ -1360,7 +1360,7 @@
 	{"SndNewChannel", (PyCFunction)Snd_SndNewChannel, 1,
 	 "(short synth, long init, PyObject* userRoutine) -> (SndChannelPtr chan)"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SndControl", (PyCFunction)Snd_SndControl, 1,
 	 "(short id) -> (SndCommand cmd)"},
 #endif
@@ -1373,27 +1373,27 @@
 	{"SndSetSysBeepState", (PyCFunction)Snd_SndSetSysBeepState, 1,
 	 "(short sysBeepState) -> None"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"MACEVersion", (PyCFunction)Snd_MACEVersion, 1,
 	 "() -> (NumVersion _rv)"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"Comp3to1", (PyCFunction)Snd_Comp3to1, 1,
 	 "(Buffer buffer, StateBlock state, unsigned long numChannels, unsigned long whichChannel) -> (Buffer buffer, StateBlock state)"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"Exp1to3", (PyCFunction)Snd_Exp1to3, 1,
 	 "(Buffer buffer, StateBlock state, unsigned long numChannels, unsigned long whichChannel) -> (Buffer buffer, StateBlock state)"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"Comp6to1", (PyCFunction)Snd_Comp6to1, 1,
 	 "(Buffer buffer, StateBlock state, unsigned long numChannels, unsigned long whichChannel) -> (Buffer buffer, StateBlock state)"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"Exp1to6", (PyCFunction)Snd_Exp1to6, 1,
 	 "(Buffer buffer, StateBlock state, unsigned long numChannels, unsigned long whichChannel) -> (Buffer buffer, StateBlock state)"},
 #endif
@@ -1430,7 +1430,7 @@
 	{"SPBRecord", (PyCFunction)Snd_SPBRecord, 1,
 	 "(SPBPtr inParamPtr, Boolean asynchFlag) -> None"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SPBRecordToFile", (PyCFunction)Snd_SPBRecordToFile, 1,
 	 "(short fRefNum, SPBPtr inParamPtr, Boolean asynchFlag) -> None"},
 #endif
diff --git a/Mac/Modules/snd/sndscan.py b/Mac/Modules/snd/sndscan.py
index c4f494f..9c1ff10 100644
--- a/Mac/Modules/snd/sndscan.py
+++ b/Mac/Modules/snd/sndscan.py
@@ -64,7 +64,7 @@
 
 	def makegreylist(self):
 		return [
-			('#ifndef TARGET_API_MAC_CARBON', [
+			('#if !TARGET_API_MAC_CARBON', [
 				'MACEVersion',
 				'SPBRecordToFile',
 				'Exp1to6',
diff --git a/Mac/Modules/snd/sndsupport.py b/Mac/Modules/snd/sndsupport.py
index 63fc4cb..1f2fdea 100644
--- a/Mac/Modules/snd/sndsupport.py
+++ b/Mac/Modules/snd/sndsupport.py
@@ -315,7 +315,7 @@
 		self->ob_completion = value;
 		Py_INCREF(value);
 		rv = 1;
-#ifndef TARGET_API_MAC_CARBON_NOTYET
+#if !TARGET_API_MAC_CARBON_NOTYET
 	} else if (strcmp(name, "interruptRoutine") == 0) {
 		self->ob_spb.completionRoutine = NewSIInterruptProc(SPB_interrupt);
 		self->ob_interrupt = value;
diff --git a/Mac/Modules/win/Winmodule.c b/Mac/Modules/win/Winmodule.c
index 033dd4b..f7890f1 100644
--- a/Mac/Modules/win/Winmodule.c
+++ b/Mac/Modules/win/Winmodule.c
@@ -38,7 +38,7 @@
 	PyObject *v;
 	WindowPtr *p_itself;
 {
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	if (DlgObj_Check(v)) {
 		*p_itself = ((WindowObject *)v)->ob_itself;
 		return 1;
@@ -130,7 +130,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *WinObj_SetWinColor(_self, _args)
 	WindowObject *_self;
@@ -232,7 +232,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *WinObj_SaveOld(_self, _args)
 	WindowObject *_self;
@@ -248,7 +248,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *WinObj_DrawNew(_self, _args)
 	WindowObject *_self;
@@ -1277,7 +1277,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *WinObj_GetAuxWin(_self, _args)
 	WindowObject *_self;
@@ -1396,7 +1396,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *WinObj_GetWindowZoomFlag(_self, _args)
 	WindowObject *_self;
@@ -1413,7 +1413,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *WinObj_GetWindowStructureRgn(_self, _args)
 	WindowObject *_self;
@@ -1432,7 +1432,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *WinObj_GetWindowContentRgn(_self, _args)
 	WindowObject *_self;
@@ -1451,7 +1451,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *WinObj_GetWindowUpdateRgn(_self, _args)
 	WindowObject *_self;
@@ -1470,7 +1470,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *WinObj_GetWindowTitleWidth(_self, _args)
 	WindowObject *_self;
@@ -1563,7 +1563,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *WinObj_CloseWindow(_self, _args)
 	WindowObject *_self;
@@ -1624,7 +1624,7 @@
 	{"GetWindowAttributes", (PyCFunction)WinObj_GetWindowAttributes, 1,
 	 "() -> (WindowAttributes outAttributes)"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SetWinColor", (PyCFunction)WinObj_SetWinColor, 1,
 	 "(WCTabHandle newColorTable) -> None"},
 #endif
@@ -1639,12 +1639,12 @@
 	{"ClipAbove", (PyCFunction)WinObj_ClipAbove, 1,
 	 "() -> None"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SaveOld", (PyCFunction)WinObj_SaveOld, 1,
 	 "() -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"DrawNew", (PyCFunction)WinObj_DrawNew, 1,
 	 "(Boolean update) -> None"},
 #endif
@@ -1767,7 +1767,7 @@
 	{"TrackGoAway", (PyCFunction)WinObj_TrackGoAway, 1,
 	 "(Point thePt) -> (Boolean _rv)"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"GetAuxWin", (PyCFunction)WinObj_GetAuxWin, 1,
 	 "() -> (Boolean _rv, AuxWinHandle awHndl)"},
 #endif
@@ -1786,27 +1786,27 @@
 	{"GetWindowGoAwayFlag", (PyCFunction)WinObj_GetWindowGoAwayFlag, 1,
 	 "() -> (Boolean _rv)"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"GetWindowZoomFlag", (PyCFunction)WinObj_GetWindowZoomFlag, 1,
 	 "() -> (Boolean _rv)"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"GetWindowStructureRgn", (PyCFunction)WinObj_GetWindowStructureRgn, 1,
 	 "(RgnHandle r) -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"GetWindowContentRgn", (PyCFunction)WinObj_GetWindowContentRgn, 1,
 	 "(RgnHandle r) -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"GetWindowUpdateRgn", (PyCFunction)WinObj_GetWindowUpdateRgn, 1,
 	 "(RgnHandle r) -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"GetWindowTitleWidth", (PyCFunction)WinObj_GetWindowTitleWidth, 1,
 	 "() -> (short _rv)"},
 #endif
@@ -1821,7 +1821,7 @@
 	{"SetWindowUserState", (PyCFunction)WinObj_SetWindowUserState, 1,
 	 "(Rect r) -> None"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"CloseWindow", (PyCFunction)WinObj_CloseWindow, 1,
 	 "() -> None"},
 #endif
@@ -2083,7 +2083,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Win_SetDeskCPat(_self, _args)
 	PyObject *_self;
@@ -2150,7 +2150,7 @@
 	return _res;
 }
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Win_InitWindows(_self, _args)
 	PyObject *_self;
@@ -2166,7 +2166,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Win_GetWMgrPort(_self, _args)
 	PyObject *_self;
@@ -2183,7 +2183,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Win_GetCWMgrPort(_self, _args)
 	PyObject *_self;
@@ -2200,7 +2200,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Win_IsValidWindowPtr(_self, _args)
 	PyObject *_self;
@@ -2219,7 +2219,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Win_InitFloatingWindows(_self, _args)
 	PyObject *_self;
@@ -2237,7 +2237,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Win_InvalRect(_self, _args)
 	PyObject *_self;
@@ -2255,7 +2255,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Win_InvalRgn(_self, _args)
 	PyObject *_self;
@@ -2273,7 +2273,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Win_ValidRect(_self, _args)
 	PyObject *_self;
@@ -2291,7 +2291,7 @@
 }
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 
 static PyObject *Win_ValidRgn(_self, _args)
 	PyObject *_self;
@@ -2414,7 +2414,7 @@
 	{"FrontNonFloatingWindow", (PyCFunction)Win_FrontNonFloatingWindow, 1,
 	 "() -> (WindowPtr _rv)"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"SetDeskCPat", (PyCFunction)Win_SetDeskCPat, 1,
 	 "(PixPatHandle deskPixPat) -> None"},
 #endif
@@ -2425,47 +2425,47 @@
 	{"FrontWindow", (PyCFunction)Win_FrontWindow, 1,
 	 "() -> (WindowPtr _rv)"},
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"InitWindows", (PyCFunction)Win_InitWindows, 1,
 	 "() -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"GetWMgrPort", (PyCFunction)Win_GetWMgrPort, 1,
 	 "() -> (GrafPtr wPort)"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"GetCWMgrPort", (PyCFunction)Win_GetCWMgrPort, 1,
 	 "() -> (CGrafPtr wMgrCPort)"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"IsValidWindowPtr", (PyCFunction)Win_IsValidWindowPtr, 1,
 	 "(GrafPtr grafPort) -> (Boolean _rv)"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"InitFloatingWindows", (PyCFunction)Win_InitFloatingWindows, 1,
 	 "() -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"InvalRect", (PyCFunction)Win_InvalRect, 1,
 	 "(Rect badRect) -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"InvalRgn", (PyCFunction)Win_InvalRgn, 1,
 	 "(RgnHandle badRgn) -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"ValidRect", (PyCFunction)Win_ValidRect, 1,
 	 "(Rect goodRect) -> None"},
 #endif
 
-#ifndef TARGET_API_MAC_CARBON
+#if !TARGET_API_MAC_CARBON
 	{"ValidRgn", (PyCFunction)Win_ValidRgn, 1,
 	 "(RgnHandle goodRgn) -> None"},
 #endif
diff --git a/Mac/Modules/win/winedit.py b/Mac/Modules/win/winedit.py
index bf43a43..89955ea 100644
--- a/Mac/Modules/win/winedit.py
+++ b/Mac/Modules/win/winedit.py
@@ -40,34 +40,34 @@
 
 f = Method(Boolean, 'GetWindowZoomFlag',
     (WindowRef, 'theWindow', InMode),
-    condition='#ifndef TARGET_API_MAC_CARBON'
+    condition='#if !TARGET_API_MAC_CARBON'
 )
 methods.append(f)
 
 f = Method(void, 'GetWindowStructureRgn',
 	(WindowRef, 'theWindow', InMode),
 	(RgnHandle, 'r', InMode),
-    condition='#ifndef TARGET_API_MAC_CARBON'
+    condition='#if !TARGET_API_MAC_CARBON'
 )
 methods.append(f)
 
 f = Method(void, 'GetWindowContentRgn',
 	(WindowRef, 'theWindow', InMode),
 	(RgnHandle, 'r', InMode),
-    condition='#ifndef TARGET_API_MAC_CARBON'
+    condition='#if !TARGET_API_MAC_CARBON'
 )
 methods.append(f)
 
 f = Method(void, 'GetWindowUpdateRgn',
 	(WindowRef, 'theWindow', InMode),
 	(RgnHandle, 'r', InMode),
-    condition='#ifndef TARGET_API_MAC_CARBON'
+    condition='#if !TARGET_API_MAC_CARBON'
 )
 methods.append(f)
 
 f = Method(short, 'GetWindowTitleWidth',
     (WindowRef, 'theWindow', InMode),
-    condition='#ifndef TARGET_API_MAC_CARBON'
+    condition='#if !TARGET_API_MAC_CARBON'
 )
 methods.append(f)
 
@@ -105,7 +105,7 @@
 # so we add the old/real names by hand.
 f = Method(void, 'CloseWindow',
     (WindowPtr, 'theWindow', InMode),
-    condition='#ifndef TARGET_API_MAC_CARBON'
+    condition='#if !TARGET_API_MAC_CARBON'
 )
 methods.append(f)
 
diff --git a/Mac/Modules/win/winscan.py b/Mac/Modules/win/winscan.py
index a968688..88a8919 100644
--- a/Mac/Modules/win/winscan.py
+++ b/Mac/Modules/win/winscan.py
@@ -48,7 +48,7 @@
 			
 	def makegreylist(self):
 		return [
-			('#ifndef TARGET_API_MAC_CARBON', [
+			('#if !TARGET_API_MAC_CARBON', [
 				'GetAuxWin',
 				'GetWindowDataHandle',
 				'SaveOld',
diff --git a/Mac/Modules/win/winsupport.py b/Mac/Modules/win/winsupport.py
index 8737894..bfc5f27 100644
--- a/Mac/Modules/win/winsupport.py
+++ b/Mac/Modules/win/winsupport.py
@@ -80,7 +80,7 @@
 		GlobalObjectDefinition.outputInitStructMembers(self)
 		Output("SetWRefCon(itself, (long)it);")
 	def outputCheckConvertArg(self):
-		Output("#ifndef TARGET_API_MAC_CARBON")
+		Output("#if !TARGET_API_MAC_CARBON")
 		OutLbrace("if (DlgObj_Check(v))")
 		Output("*p_itself = ((WindowObject *)v)->ob_itself;")
 		Output("return 1;")
