I assume you are using gcc.
If you mean all #include s, I think you need to delete them, expand the resulting file with gcc -E , then add #includes back.
If you mean only standard headers, the -nostdinc option can help you do what you want.
user@host : ~ / test / tmp $ cat 4437465.c
#include <stdio.h>
#ifndef OUTPUT_TYPE
#define OUTPUT_TYPE 1
#endif
int main (void) {
#if OUTPUT_TYPE == 1
printf ("output type 1 \ n");
#elif OUTPUT_TYPE == 2
printf ("output type 2 \ n");
#else
printf ("default output type \ n");
#endif
return 0;
} user@host : ~ / test / tmp $ gcc -DOUTPUT_TYPE = 2 -nostdinc -E 4437465.c
# 1 "4437465.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "4437465.c"
4437465.c: 1: 19: error: no include path in which to search for stdio.h
int main (void) {
printf ("output type 2 \ n");
return 0;
} pmg
source share