2016-04-21 127 views
1

我有以下來源宏替換,-E選項GCC

#include HEADER_H 

int main(int argc, char** argv) { 
    return 0; 
} 

而且我想用頭運行gcc,替補HEADER_H(在我的情況,並停止編譯,所以我只想宏。替代

我試着用的選項-D和-E如下:

gcc -E main.c -DHEADER_H= <stdio.h> -o test 

及相關變種... 但是它返回

stdio.h: No such file or directory. 

如果不是HEADER_H,我把< stdio.h >編譯好。 我錯過了什麼嗎?

我想什麼來實現如下結果:

轉化這一來源:

#include HEADER_H 

int main(int argc, char** argv) { 
    return 0; 
} 

在下面:

#include <stdio.h> 

int main(int argc, char** argv) { 
    return 0; 
} 

如果沒有進一步的擴展,如果可能的話。

更新:fluter方法返回的輸出:

# 1 "main.c" 
# 1 "<built-in>" 
# 1 "<command line>" 
# 1 "main.c" 
# 1 "/usr/include/stdio.h" 1 3 4 
# 28 "/usr/include/stdio.h" 3 4 
# 1 "/usr/include/features.h" 1 3 4 
# 329 "/usr/include/features.h" 3 4 
# 1 "/usr/include/sys/cdefs.h" 1 3 4 
# 313 "/usr/include/sys/cdefs.h" 3 4 
# 1 "/usr/include/bits/wordsize.h" 1 3 4 
# 314 "/usr/include/sys/cdefs.h" 2 3 4 
# 330 "/usr/include/features.h" 2 3 4 
# 352 "/usr/include/features.h" 3 4 
# 1 "/usr/include/gnu/stubs.h" 1 3 4 



# 1 "/usr/include/bits/wordsize.h" 1 3 4 
# 5 "/usr/include/gnu/stubs.h" 2 3 4 




# 1 "/usr/include/gnu/stubs-64.h" 1 3 4 
# 10 "/usr/include/gnu/stubs.h" 2 3 4 
# 353 "/usr/include/features.h" 2 3 4 
# 29 "/usr/include/stdio.h" 2 3 4 





# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include/stddef.h" 1 3 4 
# 214 "/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include/stddef.h" 3 4 
typedef long unsigned int size_t; 
# 35 "/usr/include/stdio.h" 2 3 4 

# 1 "/usr/include/bits/types.h" 1 3 4 
# 28 "/usr/include/bits/types.h" 3 4 
# 1 "/usr/include/bits/wordsize.h" 1 3 4 
# 29 "/usr/include/bits/types.h" 2 3 4 


# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include/stddef.h" 1 3 4 
# 32 "/usr/include/bits/types.h" 2 3 4 


typedef unsigned char __u_char; 
typedef unsigned short int __u_short; 
typedef unsigned int __u_int; 
typedef unsigned long int __u_long; 


typedef signed char __int8_t; 
typedef unsigned char __uint8_t; 
typedef signed short int __int16_t; 
typedef unsigned short int __uint16_t; 
typedef signed int __int32_t; 
typedef unsigned int __uint32_t; 

typedef signed long int __int64_t; 
typedef unsigned long int __uint64_t; 







typedef long int __quad_t; 
typedef unsigned long int __u_quad_t; 
# 134 "/usr/include/bits/types.h" 3 4 
# 1 "/usr/include/bits/typesizes.h" 1 3 4 
# 135 "/usr/include/bits/types.h" 2 3 4 


typedef unsigned long int __dev_t; 
typedef unsigned int __uid_t; 
typedef unsigned int __gid_t; 
typedef unsigned long int __ino_t; 
typedef unsigned long int __ino64_t; 
typedef unsigned int __mode_t; 
typedef unsigned long int __nlink_t; 
typedef long int __off_t; 
typedef long int __off64_t; 
typedef int __pid_t; 
typedef struct { int __val[2]; } __fsid_t; 
typedef long int __clock_t; 
typedef unsigned long int __rlim_t; 
typedef unsigned long int __rlim64_t; 
typedef unsigned int __id_t; 
typedef long int __time_t; 
typedef unsigned int __useconds_t; 
typedef long int __suseconds_t; 

typedef int __daddr_t; 
typedef long int __swblk_t; 
typedef int __key_t; 


typedef int __clockid_t; 


typedef void * __timer_t; 


typedef long int __blksize_t; 




typedef long int __blkcnt_t; 
typedef long int __blkcnt64_t; 


typedef unsigned long int __fsblkcnt_t; 
typedef unsigned long int __fsblkcnt64_t; 


typedef unsigned long int __fsfilcnt_t; 
typedef unsigned long int __fsfilcnt64_t; 

typedef long int __ssize_t; 



typedef __off64_t __loff_t; 
typedef __quad_t *__qaddr_t; 
typedef char *__caddr_t; 


typedef long int __intptr_t; 


typedef unsigned int __socklen_t; 
# 37 "/usr/include/stdio.h" 2 3 4 









typedef struct _IO_FILE FILE; 





# 62 "/usr/include/stdio.h" 3 4 
typedef struct _IO_FILE __FILE; 
# 72 "/usr/include/stdio.h" 3 4 
# 1 "/usr/include/libio.h" 1 3 4 
# 32 "/usr/include/libio.h" 3 4 
# 1 "/usr/include/_G_config.h" 1 3 4 
# 14 "/usr/include/_G_config.h" 3 4 
# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include/stddef.h" 1 3 4 
# 326 "/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include/stddef.h" 3 4 
typedef int wchar_t; 
# 355 "/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include/stddef.h" 3 4 
typedef unsigned int wint_t; 
# 15 "/usr/include/_G_config.h" 2 3 4 
# 24 "/usr/include/_G_config.h" 3 4 
# 1 "/usr/include/wchar.h" 1 3 4 
# 48 "/usr/include/wchar.h" 3 4 
# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include/stddef.h" 1 3 4 
# 49 "/usr/include/wchar.h" 2 3 4 

# 1 "/usr/include/bits/wchar.h" 1 3 4 
# 51 "/usr/include/wchar.h" 2 3 4 
# 76 "/usr/include/wchar.h" 3 4 
typedef struct 
{ 
    int __count; 
    union 
    { 
    wint_t __wch; 
    char __wchb[4]; 
    } __value; 
} __mbstate_t; 
# 25 "/usr/include/_G_config.h" 2 3 4 

typedef struct 
{ 
    __off_t __pos; 
    __mbstate_t __state; 
} _G_fpos_t; 
typedef struct 
{ 
    __off64_t __pos; 
    __mbstate_t __state; 
} _G_fpos64_t; 
# 44 "/usr/include/_G_config.h" 3 4 
# 1 "/usr/include/gconv.h" 1 3 4 
# 28 "/usr/include/gconv.h" 3 4 
# 1 "/usr/include/wchar.h" 1 3 4 
# 48 "/usr/include/wchar.h" 3 4 
# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include/stddef.h" 1 3 4 
# 49 "/usr/include/wchar.h" 2 3 4 
# 29 "/usr/include/gconv.h" 2 3 4 


# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include/stddef.h" 1 3 4 
# 32 "/usr/include/gconv.h" 2 3 4 





enum 
{ 
    __GCONV_OK = 0, 
    __GCONV_NOCONV, 
    __GCONV_NODB, 
    __GCONV_NOMEM, 

    __GCONV_EMPTY_INPUT, 
    __GCONV_FULL_OUTPUT, 
    __GCONV_ILLEGAL_INPUT, 
    __GCONV_INCOMPLETE_INPUT, 

    __GCONV_ILLEGAL_DESCRIPTOR, 
    __GCONV_INTERNAL_ERROR 
}; 



enum 
{ 
    __GCONV_IS_LAST = 0x0001, 
    __GCONV_IGNORE_ERRORS = 0x0002 
}; 



struct __gconv_step; 
struct __gconv_step_data; 
struct __gconv_loaded_object; 
struct __gconv_trans_data; 



typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *, 
     __const unsigned char **, __const unsigned char *, 
     unsigned char **, size_t *, int, int); 


typedef wint_t (*__gconv_btowc_fct) (struct __gconv_step *, unsigned char); 


typedef int (*__gconv_init_fct) (struct __gconv_step *); 
typedef void (*__gconv_end_fct) (struct __gconv_step *); 



typedef int (*__gconv_trans_fct) (struct __gconv_step *, 
     struct __gconv_step_data *, void *, 
     __const unsigned char *, 
     __const unsigned char **, 
     __const unsigned char *, unsigned char **, 
     size_t *); 


typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *, 
     __const unsigned char *, 
     unsigned char *, unsigned char *); 


typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***, 
    size_t *); 


typedef int (*__gconv_trans_init_fct) (void **, const char *); 
typedef void (*__gconv_trans_end_fct) (void *); 

struct __gconv_trans_data 
{ 

    __gconv_trans_fct __trans_fct; 
    __gconv_trans_context_fct __trans_context_fct; 
    __gconv_trans_end_fct __trans_end_fct; 
    void *__data; 
    struct __gconv_trans_data *__next; 
}; 



struct __gconv_step 
{ 
    struct __gconv_loaded_object *__shlib_handle; 
    __const char *__modname; 

    int __counter; 

    char *__from_name; 
    char *__to_name; 

    __gconv_fct __fct; 
    __gconv_btowc_fct __btowc_fct; 
    __gconv_init_fct __init_fct; 
    __gconv_end_fct __end_fct; 



    int __min_needed_from; 
    int __max_needed_from; 
    int __min_needed_to; 
    int __max_needed_to; 


    int __stateful; 

    void *__data; 
}; 



struct __gconv_step_data 
{ 
    unsigned char *__outbuf; 
    unsigned char *__outbufend; 



    int __flags; 



    int __invocation_counter; 



    int __internal_use; 

    __mbstate_t *__statep; 
    __mbstate_t __state; 



    struct __gconv_trans_data *__trans; 
}; 



typedef struct __gconv_info 
{ 
    size_t __nsteps; 
    struct __gconv_step *__steps; 
    __extension__ struct __gconv_step_data __data []; 
} *__gconv_t; 
# 45 "/usr/include/_G_config.h" 2 3 4 
typedef union 
{ 
    struct __gconv_info __cd; 
    struct 
    { 
    struct __gconv_info __cd; 
    struct __gconv_step_data __data; 
    } __combined; 
} _G_iconv_t; 

typedef int _G_int16_t __attribute__ ((__mode__ (__HI__))); 
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__))); 
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__))); 
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__))); 
# 33 "/usr/include/libio.h" 2 3 4 
# 53 "/usr/include/libio.h" 3 4 
# 1 "/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include/stdarg.h" 1 3 4 
# 43 "/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include/stdarg.h" 3 4 
typedef __builtin_va_list __gnuc_va_list; 
# 54 "/usr/include/libio.h" 2 3 4 
# 167 "/usr/include/libio.h" 3 4 
struct _IO_jump_t; struct _IO_FILE; 
# 177 "/usr/include/libio.h" 3 4 
typedef void _IO_lock_t; 





struct _IO_marker { 
    struct _IO_marker *_next; 
    struct _IO_FILE *_sbuf; 



    int _pos; 
# 200 "/usr/include/libio.h" 3 4 
}; 


enum __codecvt_result 
{ 
    __codecvt_ok, 
    __codecvt_partial, 
    __codecvt_error, 
    __codecvt_noconv 
}; 
# 268 "/usr/include/libio.h" 3 4 
struct _IO_FILE { 
    int _flags; 




    char* _IO_read_ptr; 
    char* _IO_read_end; 
    char* _IO_read_base; 
    char* _IO_write_base; 
    char* _IO_write_ptr; 
    char* _IO_write_end; 
    char* _IO_buf_base; 
    char* _IO_buf_end; 

    char *_IO_save_base; 
    char *_IO_backup_base; 
    char *_IO_save_end; 

    struct _IO_marker *_markers; 

    struct _IO_FILE *_chain; 

    int _fileno; 



    int _flags2; 

    __off_t _old_offset; 



    unsigned short _cur_column; 
    signed char _vtable_offset; 
    char _shortbuf[1]; 



    _IO_lock_t *_lock; 
# 316 "/usr/include/libio.h" 3 4 
    __off64_t _offset; 
# 325 "/usr/include/libio.h" 3 4 
    void *__pad1; 
    void *__pad2; 
    void *__pad3; 
    void *__pad4; 
    size_t __pad5; 

    int _mode; 

    char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)]; 

}; 


typedef struct _IO_FILE _IO_FILE; 


struct _IO_FILE_plus; 

extern struct _IO_FILE_plus _IO_2_1_stdin_; 
extern struct _IO_FILE_plus _IO_2_1_stdout_; 
extern struct _IO_FILE_plus _IO_2_1_stderr_; 
# 361 "/usr/include/libio.h" 3 4 
typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes); 







typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf, 
    size_t __n); 







typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w); 


typedef int __io_close_fn (void *__cookie); 
# 413 "/usr/include/libio.h" 3 4 
extern int __underflow (_IO_FILE *); 
extern int __uflow (_IO_FILE *); 
extern int __overflow (_IO_FILE *, int); 
extern wint_t __wunderflow (_IO_FILE *); 
extern wint_t __wuflow (_IO_FILE *); 
extern wint_t __woverflow (_IO_FILE *, wint_t); 
# 451 "/usr/include/libio.h" 3 4 
extern int _IO_getc (_IO_FILE *__fp); 
extern int _IO_putc (int __c, _IO_FILE *__fp); 
extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__)); 
extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__)); 

extern int _IO_peekc_locked (_IO_FILE *__fp); 





extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__)); 
extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__)); 
extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__)); 
# 481 "/usr/include/libio.h" 3 4 
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict, 
    __gnuc_va_list, int *__restrict); 
extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict, 
    __gnuc_va_list); 
extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t); 
extern size_t _IO_sgetn (_IO_FILE *, void *, size_t); 

extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int); 
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int); 

extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__)); 
# 73 "/usr/include/stdio.h" 2 3 4 
# 86 "/usr/include/stdio.h" 3 4 


typedef _G_fpos_t fpos_t; 




# 138 "/usr/include/stdio.h" 3 4 
# 1 "/usr/include/bits/stdio_lim.h" 1 3 4 
# 139 "/usr/include/stdio.h" 2 3 4 



extern struct _IO_FILE *stdin; 
extern struct _IO_FILE *stdout; 
extern struct _IO_FILE *stderr; 









extern int remove (__const char *__filename) __attribute__ ((__nothrow__)); 

extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__)); 














extern FILE *tmpfile (void); 
# 185 "/usr/include/stdio.h" 3 4 
extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)); 





extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)); 
# 203 "/usr/include/stdio.h" 3 4 
extern char *tempnam (__const char *__dir, __const char *__pfx) 
    __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)); 








extern int fclose (FILE *__stream); 




extern int fflush (FILE *__stream); 

# 228 "/usr/include/stdio.h" 3 4 
extern int fflush_unlocked (FILE *__stream); 
# 242 "/usr/include/stdio.h" 3 4 






extern FILE *fopen (__const char *__restrict __filename, 
     __const char *__restrict __modes); 




extern FILE *freopen (__const char *__restrict __filename, 
     __const char *__restrict __modes, 
     FILE *__restrict __stream); 
# 269 "/usr/include/stdio.h" 3 4 

# 280 "/usr/include/stdio.h" 3 4 
extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)); 
# 300 "/usr/include/stdio.h" 3 4 



extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__)); 



extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, 
     int __modes, size_t __n) __attribute__ ((__nothrow__)); 





extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, 
     size_t __size) __attribute__ ((__nothrow__)); 


extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__)); 








extern int fprintf (FILE *__restrict __stream, 
     __const char *__restrict __format, ...); 




extern int printf (__const char *__restrict __format, ...); 

extern int sprintf (char *__restrict __s, 
     __const char *__restrict __format, ...) __attribute__ ((__nothrow__)); 





extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format, 
     __gnuc_va_list __arg); 




extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg); 

extern int vsprintf (char *__restrict __s, __const char *__restrict __format, 
     __gnuc_va_list __arg) __attribute__ ((__nothrow__)); 





extern int snprintf (char *__restrict __s, size_t __maxlen, 
     __const char *__restrict __format, ...) 
    __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4))); 

extern int vsnprintf (char *__restrict __s, size_t __maxlen, 
     __const char *__restrict __format, __gnuc_va_list __arg) 
    __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0))); 

# 394 "/usr/include/stdio.h" 3 4 





extern int fscanf (FILE *__restrict __stream, 
    __const char *__restrict __format, ...) ; 




extern int scanf (__const char *__restrict __format, ...) ; 

extern int sscanf (__const char *__restrict __s, 
    __const char *__restrict __format, ...) __attribute__ ((__nothrow__)); 

# 436 "/usr/include/stdio.h" 3 4 





extern int fgetc (FILE *__stream); 
extern int getc (FILE *__stream); 





extern int getchar (void); 

# 460 "/usr/include/stdio.h" 3 4 
extern int getc_unlocked (FILE *__stream); 
extern int getchar_unlocked (void); 
# 471 "/usr/include/stdio.h" 3 4 
extern int fgetc_unlocked (FILE *__stream); 











extern int fputc (int __c, FILE *__stream); 
extern int putc (int __c, FILE *__stream); 





extern int putchar (int __c); 

# 504 "/usr/include/stdio.h" 3 4 
extern int fputc_unlocked (int __c, FILE *__stream); 







extern int putc_unlocked (int __c, FILE *__stream); 
extern int putchar_unlocked (int __c); 






extern int getw (FILE *__stream); 


extern int putw (int __w, FILE *__stream); 








extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) 
    ; 






extern char *gets (char *__s) ; 

# 585 "/usr/include/stdio.h" 3 4 





extern int fputs (__const char *__restrict __s, FILE *__restrict __stream); 





extern int puts (__const char *__s); 






extern int ungetc (int __c, FILE *__stream); 






extern size_t fread (void *__restrict __ptr, size_t __size, 
     size_t __n, FILE *__restrict __stream) ; 




extern size_t fwrite (__const void *__restrict __ptr, size_t __size, 
     size_t __n, FILE *__restrict __s) ; 

# 638 "/usr/include/stdio.h" 3 4 
extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, 
     size_t __n, FILE *__restrict __stream) ; 
extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size, 
      size_t __n, FILE *__restrict __stream) ; 








extern int fseek (FILE *__stream, long int __off, int __whence); 




extern long int ftell (FILE *__stream) ; 




extern void rewind (FILE *__stream); 

# 674 "/usr/include/stdio.h" 3 4 
extern int fseeko (FILE *__stream, __off_t __off, int __whence); 




extern __off_t ftello (FILE *__stream) ; 
# 693 "/usr/include/stdio.h" 3 4 






extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos); 




extern int fsetpos (FILE *__stream, __const fpos_t *__pos); 
# 716 "/usr/include/stdio.h" 3 4 

# 725 "/usr/include/stdio.h" 3 4 


extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__)); 

extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) ; 

extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) ; 




extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__)); 
extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ; 
extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ; 








extern void perror (__const char *__s); 






# 1 "/usr/include/bits/sys_errlist.h" 1 3 4 
# 27 "/usr/include/bits/sys_errlist.h" 3 4 
extern int sys_nerr; 
extern __const char *__const sys_errlist[]; 
# 755 "/usr/include/stdio.h" 2 3 4 




extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) ; 




extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ; 
# 774 "/usr/include/stdio.h" 3 4 
extern FILE *popen (__const char *__command, __const char *__modes) ; 





extern int pclose (FILE *__stream); 





extern char *ctermid (char *__s) __attribute__ ((__nothrow__)); 
# 814 "/usr/include/stdio.h" 3 4 
extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__)); 



extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ; 


extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__)); 
# 844 "/usr/include/stdio.h" 3 4 

# 2 "main.c" 2 

int main(int argc, char** argv) { 
    return 0; 
} 
+2

你要逃避''<', '>從殼空間。最簡單的解決方案是'#include ',只在宏中定義文件名。 – Useless

+0

類似於gcc -E main.c -DHEADER_H= -o test? – user8469759

+2

編號避免在命令行中使用'<' and '>',它們對shell有特殊的含義。這與預處理器無關,你的shell首先解析命令,這就是錯誤的來源。如果你使用shell特殊字符,你必須小心翼翼地將它們轉義出來,而避免它就更容易了。我說_「只在宏中定義文件名」_ - 這將是'-DHEADER_H = stdio.h',並將尖括號移到源文件中。 – Useless

回答

2

你要引用<>,因爲它們是由shell解釋爲重定向,所以像這樣:

gcc -DHEADER_H="<stdio.h>" -E main.c -o test 

另外你ne ed在宏定義中放置了包含頭文件<>"",否則替代品將不會運行。用途:

#include HEADER_H 

參考:

https://gcc.gnu.org/onlinedocs/cpp/Computed-Includes.html

爲什麼呢include指令不,它只是插入文件的#include指令的位置的內容,請參考標準:

形式爲 #的預處理指令#包含新行 搜索一系列實現定義的位置ader通過 <和>分隔符之間的指定序列唯一標識,並導致該標頭的全部內容替代該指令 。如何指定地點或者標識 是實施定義的。

+0

仍然得到main.c:1:20: error: HEADER_H: No such file or directory user8469759

+0

@lukkio也需要修復#include指令。 – fluter

+0

也是這樣,沒有工作。 – user8469759

1

<stdio被解釋爲重定向,使用引號:

gcc -E main.c -DHEADER_H="<stdio.h>" -o test 
1

你要逃離的說法:

$ gcc -E main.c -DHEADER_H='<stdio.h>' -o test