diff --git a/Modules/_ctypes/libffi/src/x86/ffi.c b/Modules/_ctypes/libffi/src/x86/ffi.c
index 767effb..60d7f47 100644
--- a/Modules/_ctypes/libffi/src/x86/ffi.c
+++ b/Modules/_ctypes/libffi/src/x86/ffi.c
@@ -388,10 +388,10 @@
     return FFI_BAD_ABI;
   }
 
-  // we currently don't support certain kinds of arguments for raw
+  /* we currently don't support certain kinds of arguments for raw
   // closures.  This should be implemented by a separate assembly language
   // routine, since it would require argument processing, something we
-  // don't do now for performance.
+  // don't do now for performance. */
 
   for (i = cif->nargs-1; i >= 0; i--)
     {
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index 8860b39..7464eae 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -107,7 +107,7 @@
     tv->tv_usec = fmod(d, 1.0) * 1000000.0;
 }
 
-static inline double
+Py_LOCAL_INLINE(double)
 double_from_timeval(struct timeval *tv)
 {
     return tv->tv_sec + (double)(tv->tv_usec / 1000000.0);
diff --git a/Modules/tkappinit.c b/Modules/tkappinit.c
index 1c67632..de04b0d 100644
--- a/Modules/tkappinit.c
+++ b/Modules/tkappinit.c
@@ -71,7 +71,7 @@
 #endif
 
 #ifdef WITH_XXX
-		// Initialize modules that don't require Tk
+		/* Initialize modules that don't require Tk */
 #endif
 
 	_tkinter_skip_tk_init =	Tcl_GetVar(interp, "_tkinter_skip_tk_init", TCL_GLOBAL_ONLY);
diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c
index e924e8d..0d0efc9 100644
--- a/Objects/bytesobject.c
+++ b/Objects/bytesobject.c
@@ -2965,7 +2965,7 @@
 		new = PyBytes_FromStringAndSize(NULL, view.len);
 		if (!new)
 			goto fail;
-		// XXX(brett.cannon): Better way to get to internal buffer?
+		/* XXX(brett.cannon): Better way to get to internal buffer? */
 		if (PyBuffer_ToContiguous(((PyBytesObject *)new)->ob_sval,
 					  &view, view.len, 'C') < 0)
 			goto fail;
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 60cd957..0c5c6ef 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -126,19 +126,19 @@
 /* Fast detection of the most frequent whitespace characters */
 const unsigned char _Py_ascii_whitespace[] = {
 	0, 0, 0, 0, 0, 0, 0, 0,
-//     case 0x0009: /* HORIZONTAL TABULATION */
-//     case 0x000A: /* LINE FEED */
-//     case 0x000B: /* VERTICAL TABULATION */
-//     case 0x000C: /* FORM FEED */
-//     case 0x000D: /* CARRIAGE RETURN */
+/*     case 0x0009: * HORIZONTAL TABULATION */
+/*     case 0x000A: * LINE FEED */
+/*     case 0x000B: * VERTICAL TABULATION */
+/*     case 0x000C: * FORM FEED */
+/*     case 0x000D: * CARRIAGE RETURN */
 	0, 1, 1, 1, 1, 1, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0,
-//     case 0x001C: /* FILE SEPARATOR */
-//     case 0x001D: /* GROUP SEPARATOR */
-//     case 0x001E: /* RECORD SEPARATOR */
-//     case 0x001F: /* UNIT SEPARATOR */
+/*     case 0x001C: * FILE SEPARATOR */
+/*     case 0x001D: * GROUP SEPARATOR */
+/*     case 0x001E: * RECORD SEPARATOR */
+/*     case 0x001F: * UNIT SEPARATOR */
 	0, 0, 0, 0, 1, 1, 1, 1,
-//     case 0x0020: /* SPACE */
+/*     case 0x0020: * SPACE */
 	1, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0,
@@ -157,13 +157,13 @@
 /* Same for linebreaks */
 static unsigned char ascii_linebreak[] = {
 	0, 0, 0, 0, 0, 0, 0, 0,
-//         0x000A, /* LINE FEED */
-//         0x000D, /* CARRIAGE RETURN */
+/*         0x000A, * LINE FEED */
+/*         0x000D, * CARRIAGE RETURN */
 	0, 0, 1, 0, 0, 1, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0,
-//         0x001C, /* FILE SEPARATOR */
-//         0x001D, /* GROUP SEPARATOR */
-//         0x001E, /* RECORD SEPARATOR */
+/*         0x001C, * FILE SEPARATOR */
+/*         0x001D, * GROUP SEPARATOR */
+/*         0x001E, * RECORD SEPARATOR */
 	0, 0, 0, 0, 1, 1, 1, 0,
 	0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0,
diff --git a/Python/_warnings.c b/Python/_warnings.c
index 84558d1..43e6b80 100644
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -382,7 +382,7 @@
         }
     }
 
-    if (rc == 1)  // Already warned for this module. */
+    if (rc == 1)  /* Already warned for this module. */
         goto return_none;
     if (rc == 0) {
         PyObject *show_fxn = get_warnings_attr("showwarning");
@@ -776,8 +776,8 @@
         warn_doc},
     {"warn_explicit", (PyCFunction)warnings_warn_explicit,
         METH_VARARGS | METH_KEYWORDS, warn_explicit_doc},
-    // XXX(brett.cannon): add showwarning?
-    // XXX(brett.cannon): Reasonable to add formatwarning?
+    /* XXX(brett.cannon): add showwarning? */
+    /* XXX(brett.cannon): Reasonable to add formatwarning? */
     {NULL, NULL}	        /* sentinel */
 };
 
