diff --git a/src/os_win32.c b/src/os_win32.c
index 49fd0f7..d7b5634 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -1492,7 +1492,7 @@
 	{
 	    DWORD dwWaitTime = dwEndTime - dwNow;
 
-#ifdef FEAT_CHANNEL
+#ifdef FEAT_JOB_CHANNEL
 	    /* Check channel while waiting input. */
 	    if (dwWaitTime > 100)
 		dwWaitTime = 100;
@@ -4991,7 +4991,7 @@
     return x;
 }
 
-#if defined(FEAT_JOB) || defined(PROTO)
+#if defined(FEAT_JOB_CHANNEL) || defined(PROTO)
     static HANDLE
 job_io_file_open(
         char_u *fname,
@@ -5033,7 +5033,6 @@
     STARTUPINFO		si;
     PROCESS_INFORMATION	pi;
     HANDLE		jo;
-# ifdef FEAT_CHANNEL
     SECURITY_ATTRIBUTES saAttr;
     channel_T		*channel = NULL;
     HANDLE		ifd[2];
@@ -5057,7 +5056,6 @@
     ofd[1] = INVALID_HANDLE_VALUE;
     efd[0] = INVALID_HANDLE_VALUE;
     efd[1] = INVALID_HANDLE_VALUE;
-# endif
 
     jo = CreateJobObject(NULL, NULL);
     if (jo == NULL)
@@ -5072,7 +5070,6 @@
     si.dwFlags |= STARTF_USESHOWWINDOW;
     si.wShowWindow = SW_HIDE;
 
-# ifdef FEAT_CHANNEL
     saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
     saAttr.bInheritHandle = TRUE;
     saAttr.lpSecurityDescriptor = NULL;
@@ -5149,7 +5146,6 @@
 	if (channel == NULL)
 	    goto failed;
     }
-# endif
 
     if (!vim_create_process(cmd, TRUE,
 	    CREATE_SUSPENDED |
@@ -5176,7 +5172,6 @@
     job->jv_job_object = jo;
     job->jv_status = JOB_STARTED;
 
-# ifdef FEAT_CHANNEL
     if (!use_file_for_in)
 	CloseHandle(ifd[0]);
     if (!use_file_for_out)
@@ -5196,11 +5191,9 @@
 					    ? INVALID_FD : (sock_T)efd[0]);
 	channel_set_job(channel, job, options);
     }
-# endif
     return;
 
 failed:
-# ifdef FEAT_CHANNEL
     CloseHandle(ifd[0]);
     CloseHandle(ofd[0]);
     CloseHandle(efd[0]);
@@ -5208,9 +5201,6 @@
     CloseHandle(ofd[1]);
     CloseHandle(efd[1]);
     channel_unref(channel);
-# else
-    ;  /* make compiler happy */
-# endif
 }
 
     char *
