1. gcc -E hello.c -o hello.i

或者写为:

  1. gcc -E hello.c

-E 表示可以让编译器在预处理后停止,并输出预处理结果。

可以输出 hello.i ,hello.i 文件中存放着 hello.c 经预处理之后的代码。 打开 hello.i 文件,看一看 就明白了。 其中 hello.i 的文件内容如下:

  1. # 1 "hello.c"
  2. # 1 "<built-in>"
  3. # 1 "<命令行>"
  4. # 1 "hello.c"
  5. # 1 "/usr/include/stdio.h" 1 3 4
  6. # 28 "/usr/include/stdio.h" 3 4
  7. # 1 "/usr/include/features.h" 1 3 4
  8. # 324 "/usr/include/features.h" 3 4
  9. # 1 "/usr/include/i386-linux-gnu/bits/predefs.h" 1 3 4
  10. # 325 "/usr/include/features.h" 2 3 4
  11. # 357 "/usr/include/features.h" 3 4
  12. # 1 "/usr/include/i386-linux-gnu/sys/cdefs.h" 1 3 4
  13. # 378 "/usr/include/i386-linux-gnu/sys/cdefs.h" 3 4
  14. # 1 "/usr/include/i386-linux-gnu/bits/wordsize.h" 1 3 4
  15. # 379 "/usr/include/i386-linux-gnu/sys/cdefs.h" 2 3 4
  16. # 358 "/usr/include/features.h" 2 3 4
  17. # 389 "/usr/include/features.h" 3 4
  18. # 1 "/usr/include/i386-linux-gnu/gnu/stubs.h" 1 3 4
  19. # 1 "/usr/include/i386-linux-gnu/bits/wordsize.h" 1 3 4
  20. # 5 "/usr/include/i386-linux-gnu/gnu/stubs.h" 2 3 4
  21. # 1 "/usr/include/i386-linux-gnu/gnu/stubs-32.h" 1 3 4
  22. # 8 "/usr/include/i386-linux-gnu/gnu/stubs.h" 2 3 4
  23. # 390 "/usr/include/features.h" 2 3 4
  24. # 29 "/usr/include/stdio.h" 2 3 4
  25. # 1 "/usr/lib/gcc/i686-linux-gnu/4.6/include/stddef.h" 1 3 4
  26. # 212 "/usr/lib/gcc/i686-linux-gnu/4.6/include/stddef.h" 3 4
  27. typedef unsigned int size_t;
  28. # 35 "/usr/include/stdio.h" 2 3 4
  29. # 1 "/usr/include/i386-linux-gnu/bits/types.h" 1 3 4
  30. # 28 "/usr/include/i386-linux-gnu/bits/types.h" 3 4
  31. # 1 "/usr/include/i386-linux-gnu/bits/wordsize.h" 1 3 4
  32. # 29 "/usr/include/i386-linux-gnu/bits/types.h" 2 3 4
  33. typedef unsigned char __u_char;
  34. typedef unsigned short int __u_short;
  35. typedef unsigned int __u_int;
  36. typedef unsigned long int __u_long;
  37. typedef signed char __int8_t;
  38. typedef unsigned char __uint8_t;
  39. typedef signed short int __int16_t;
  40. typedef unsigned short int __uint16_t;
  41. typedef signed int __int32_t;
  42. typedef unsigned int __uint32_t;
  43. __extension__ typedef signed long long int __int64_t;
  44. __extension__ typedef unsigned long long int __uint64_t;
  45. __extension__ typedef long long int __quad_t;
  46. __extension__ typedef unsigned long long int __u_quad_t;
  47. # 131 "/usr/include/i386-linux-gnu/bits/types.h" 3 4
  48. # 1 "/usr/include/i386-linux-gnu/bits/typesizes.h" 1 3 4
  49. # 132 "/usr/include/i386-linux-gnu/bits/types.h" 2 3 4
  50. __extension__ typedef __u_quad_t __dev_t;
  51. __extension__ typedef unsigned int __uid_t;
  52. __extension__ typedef unsigned int __gid_t;
  53. __extension__ typedef unsigned long int __ino_t;
  54. __extension__ typedef __u_quad_t __ino64_t;
  55. __extension__ typedef unsigned int __mode_t;
  56. __extension__ typedef unsigned int __nlink_t;
  57. __extension__ typedef long int __off_t;
  58. __extension__ typedef __quad_t __off64_t;
  59. __extension__ typedef int __pid_t;
  60. __extension__ typedef struct { int __val[2]; } __fsid_t;
  61. __extension__ typedef long int __clock_t;
  62. __extension__ typedef unsigned long int __rlim_t;
  63. __extension__ typedef __u_quad_t __rlim64_t;
  64. __extension__ typedef unsigned int __id_t;
  65. __extension__ typedef long int __time_t;
  66. __extension__ typedef unsigned int __useconds_t;
  67. __extension__ typedef long int __suseconds_t;
  68. __extension__ typedef int __daddr_t;
  69. __extension__ typedef long int __swblk_t;
  70. __extension__ typedef int __key_t;
  71. __extension__ typedef int __clockid_t;
  72. __extension__ typedef void * __timer_t;
  73. __extension__ typedef long int __blksize_t;
  74. __extension__ typedef long int __blkcnt_t;
  75. __extension__ typedef __quad_t __blkcnt64_t;
  76. __extension__ typedef unsigned long int __fsblkcnt_t;
  77. __extension__ typedef __u_quad_t __fsblkcnt64_t;
  78. __extension__ typedef unsigned long int __fsfilcnt_t;
  79. __extension__ typedef __u_quad_t __fsfilcnt64_t;
  80. __extension__ typedef int __ssize_t;
  81. typedef __off64_t __loff_t;
  82. typedef __quad_t *__qaddr_t;
  83. typedef char *__caddr_t;
  84. __extension__ typedef int __intptr_t;
  85. __extension__ typedef unsigned int __socklen_t;
  86. # 37 "/usr/include/stdio.h" 2 3 4
  87. # 45 "/usr/include/stdio.h" 3 4
  88. struct _IO_FILE;
  89. typedef struct _IO_FILE FILE;
  90. # 65 "/usr/include/stdio.h" 3 4
  91. typedef struct _IO_FILE __FILE;
  92. # 75 "/usr/include/stdio.h" 3 4
  93. # 1 "/usr/include/libio.h" 1 3 4
  94. # 32 "/usr/include/libio.h" 3 4
  95. # 1 "/usr/include/_G_config.h" 1 3 4
  96. # 15 "/usr/include/_G_config.h" 3 4
  97. # 1 "/usr/lib/gcc/i686-linux-gnu/4.6/include/stddef.h" 1 3 4
  98. # 16 "/usr/include/_G_config.h" 2 3 4
  99. # 1 "/usr/include/wchar.h" 1 3 4
  100. # 83 "/usr/include/wchar.h" 3 4
  101. typedef struct
  102. {
  103. int __count;
  104. union
  105. {
  106. unsigned int __wch;
  107. char __wchb[4];
  108. } __value;
  109. } __mbstate_t;
  110. # 21 "/usr/include/_G_config.h" 2 3 4
  111. typedef struct
  112. {
  113. __off_t __pos;
  114. __mbstate_t __state;
  115. } _G_fpos_t;
  116. typedef struct
  117. {
  118. __off64_t __pos;
  119. __mbstate_t __state;
  120. } _G_fpos64_t;
  121. # 53 "/usr/include/_G_config.h" 3 4
  122. typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
  123. typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
  124. typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
  125. typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
  126. # 33 "/usr/include/libio.h" 2 3 4
  127. # 53 "/usr/include/libio.h" 3 4
  128. # 1 "/usr/lib/gcc/i686-linux-gnu/4.6/include/stdarg.h" 1 3 4
  129. # 40 "/usr/lib/gcc/i686-linux-gnu/4.6/include/stdarg.h" 3 4
  130. typedef __builtin_va_list __gnuc_va_list;
  131. # 54 "/usr/include/libio.h" 2 3 4
  132. # 172 "/usr/include/libio.h" 3 4
  133. struct _IO_jump_t; struct _IO_FILE;
  134. # 182 "/usr/include/libio.h" 3 4
  135. typedef void _IO_lock_t;
  136. struct _IO_marker {
  137. struct _IO_marker *_next;
  138. struct _IO_FILE *_sbuf;
  139. int _pos;
  140. # 205 "/usr/include/libio.h" 3 4
  141. };
  142. enum __codecvt_result
  143. {
  144. __codecvt_ok,
  145. __codecvt_partial,
  146. __codecvt_error,
  147. __codecvt_noconv
  148. };
  149. # 273 "/usr/include/libio.h" 3 4
  150. struct _IO_FILE {
  151. int _flags;
  152. char* _IO_read_ptr;
  153. char* _IO_read_end;
  154. char* _IO_read_base;
  155. char* _IO_write_base;
  156. char* _IO_write_ptr;
  157. char* _IO_write_end;
  158. char* _IO_buf_base;
  159. char* _IO_buf_end;
  160. char *_IO_save_base;
  161. char *_IO_backup_base;
  162. char *_IO_save_end;
  163. struct _IO_marker *_markers;
  164. struct _IO_FILE *_chain;
  165. int _fileno;
  166. int _flags2;
  167. __off_t _old_offset;
  168. unsigned short _cur_column;
  169. signed char _vtable_offset;
  170. char _shortbuf[1];
  171. _IO_lock_t *_lock;
  172. # 321 "/usr/include/libio.h" 3 4
  173. __off64_t _offset;
  174. # 330 "/usr/include/libio.h" 3 4
  175. void *__pad1;
  176. void *__pad2;
  177. void *__pad3;
  178. void *__pad4;
  179. size_t __pad5;
  180. int _mode;
  181. char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
  182. };
  183. typedef struct _IO_FILE _IO_FILE;
  184. struct _IO_FILE_plus;
  185. extern struct _IO_FILE_plus _IO_2_1_stdin_;
  186. extern struct _IO_FILE_plus _IO_2_1_stdout_;
  187. extern struct _IO_FILE_plus _IO_2_1_stderr_;
  188. # 366 "/usr/include/libio.h" 3 4
  189. typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
  190. typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
  191. size_t __n);
  192. typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
  193. typedef int __io_close_fn (void *__cookie);
  194. # 418 "/usr/include/libio.h" 3 4
  195. extern int __underflow (_IO_FILE *);
  196. extern int __uflow (_IO_FILE *);
  197. extern int __overflow (_IO_FILE *, int);
  198. # 462 "/usr/include/libio.h" 3 4
  199. extern int _IO_getc (_IO_FILE *__fp);
  200. extern int _IO_putc (int __c, _IO_FILE *__fp);
  201. extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__ , __leaf__));
  202. extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__ , __leaf__));
  203. extern int _IO_peekc_locked (_IO_FILE *__fp);
  204. extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__ , __leaf__));
  205. extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__ , __leaf__));
  206. extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__ , __leaf__));
  207. # 492 "/usr/include/libio.h" 3 4
  208. extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
  209. __gnuc_va_list, int *__restrict);
  210. extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
  211. __gnuc_va_list);
  212. extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
  213. extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
  214. extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
  215. extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
  216. extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__ , __leaf__));
  217. # 76 "/usr/include/stdio.h" 2 3 4
  218. typedef __gnuc_va_list va_list;
  219. # 91 "/usr/include/stdio.h" 3 4
  220. typedef __off_t off_t;
  221. # 103 "/usr/include/stdio.h" 3 4
  222. typedef __ssize_t ssize_t;
  223. typedef _G_fpos_t fpos_t;
  224. # 165 "/usr/include/stdio.h" 3 4
  225. # 1 "/usr/include/i386-linux-gnu/bits/stdio_lim.h" 1 3 4
  226. # 166 "/usr/include/stdio.h" 2 3 4
  227. extern struct _IO_FILE *stdin;
  228. extern struct _IO_FILE *stdout;
  229. extern struct _IO_FILE *stderr;
  230. extern int remove (__const char *__filename) __attribute__ ((__nothrow__ , __leaf__));
  231. extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__ , __leaf__));
  232. extern int renameat (int __oldfd, __const char *__old, int __newfd,
  233. __const char *__new) __attribute__ ((__nothrow__ , __leaf__));
  234. extern FILE *tmpfile (void) ;
  235. # 210 "/usr/include/stdio.h" 3 4
  236. extern char *tmpnam (char *__s) __attribute__ ((__nothrow__ , __leaf__)) ;
  237. extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__ , __leaf__)) ;
  238. # 228 "/usr/include/stdio.h" 3 4
  239. extern char *tempnam (__const char *__dir, __const char *__pfx)
  240. __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) ;
  241. extern int fclose (FILE *__stream);
  242. extern int fflush (FILE *__stream);
  243. # 253 "/usr/include/stdio.h" 3 4
  244. extern int fflush_unlocked (FILE *__stream);
  245. # 267 "/usr/include/stdio.h" 3 4
  246. extern FILE *fopen (__const char *__restrict __filename,
  247. __const char *__restrict __modes) ;
  248. extern FILE *freopen (__const char *__restrict __filename,
  249. __const char *__restrict __modes,
  250. FILE *__restrict __stream) ;
  251. # 296 "/usr/include/stdio.h" 3 4
  252. # 307 "/usr/include/stdio.h" 3 4
  253. extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__ , __leaf__)) ;
  254. # 320 "/usr/include/stdio.h" 3 4
  255. extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
  256. __attribute__ ((__nothrow__ , __leaf__)) ;
  257. extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__ , __leaf__)) ;
  258. extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__));
  259. extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
  260. int __modes, size_t __n) __attribute__ ((__nothrow__ , __leaf__));
  261. extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
  262. size_t __size) __attribute__ ((__nothrow__ , __leaf__));
  263. extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
  264. extern int fprintf (FILE *__restrict __stream,
  265. __const char *__restrict __format, ...);
  266. extern int printf (__const char *__restrict __format, ...);
  267. extern int sprintf (char *__restrict __s,
  268. __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
  269. extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
  270. __gnuc_va_list __arg);
  271. extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
  272. extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
  273. __gnuc_va_list __arg) __attribute__ ((__nothrow__));
  274. extern int snprintf (char *__restrict __s, size_t __maxlen,
  275. __const char *__restrict __format, ...)
  276. __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
  277. extern int vsnprintf (char *__restrict __s, size_t __maxlen,
  278. __const char *__restrict __format, __gnuc_va_list __arg)
  279. __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
  280. # 418 "/usr/include/stdio.h" 3 4
  281. extern int vdprintf (int __fd, __const char *__restrict __fmt,
  282. __gnuc_va_list __arg)
  283. __attribute__ ((__format__ (__printf__, 2, 0)));
  284. extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
  285. __attribute__ ((__format__ (__printf__, 2, 3)));
  286. extern int fscanf (FILE *__restrict __stream,
  287. __const char *__restrict __format, ...) ;
  288. extern int scanf (__const char *__restrict __format, ...) ;
  289. extern int sscanf (__const char *__restrict __s,
  290. __const char *__restrict __format, ...) __attribute__ ((__nothrow__ , __leaf__));
  291. # 449 "/usr/include/stdio.h" 3 4
  292. extern int fscanf (FILE *__restrict __stream, __const char *__restrict __format, ...) __asm__ ("" "__isoc99_fscanf")
  293. ;
  294. extern int scanf (__const char *__restrict __format, ...) __asm__ ("" "__isoc99_scanf")
  295. ;
  296. extern int sscanf (__const char *__restrict __s, __const char *__restrict __format, ...) __asm__ ("" "__isoc99_sscanf") __attribute__ ((__nothrow__ , __leaf__))
  297. ;
  298. # 469 "/usr/include/stdio.h" 3 4
  299. extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
  300. __gnuc_va_list __arg)
  301. __attribute__ ((__format__ (__scanf__, 2, 0))) ;
  302. extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
  303. __attribute__ ((__format__ (__scanf__, 1, 0))) ;
  304. extern int vsscanf (__const char *__restrict __s,
  305. __const char *__restrict __format, __gnuc_va_list __arg)
  306. __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
  307. # 500 "/usr/include/stdio.h" 3 4
  308. extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfscanf")
  309. __attribute__ ((__format__ (__scanf__, 2, 0))) ;
  310. extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vscanf")
  311. __attribute__ ((__format__ (__scanf__, 1, 0))) ;
  312. extern int vsscanf (__const char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vsscanf") __attribute__ ((__nothrow__ , __leaf__))
  313. __attribute__ ((__format__ (__scanf__, 2, 0)));
  314. # 528 "/usr/include/stdio.h" 3 4
  315. extern int fgetc (FILE *__stream);
  316. extern int getc (FILE *__stream);
  317. extern int getchar (void);
  318. # 556 "/usr/include/stdio.h" 3 4
  319. extern int getc_unlocked (FILE *__stream);
  320. extern int getchar_unlocked (void);
  321. # 567 "/usr/include/stdio.h" 3 4
  322. extern int fgetc_unlocked (FILE *__stream);
  323. extern int fputc (int __c, FILE *__stream);
  324. extern int putc (int __c, FILE *__stream);
  325. extern int putchar (int __c);
  326. # 600 "/usr/include/stdio.h" 3 4
  327. extern int fputc_unlocked (int __c, FILE *__stream);
  328. extern int putc_unlocked (int __c, FILE *__stream);
  329. extern int putchar_unlocked (int __c);
  330. extern int getw (FILE *__stream);
  331. extern int putw (int __w, FILE *__stream);
  332. extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
  333. ;
  334. extern char *gets (char *__s) ;
  335. # 662 "/usr/include/stdio.h" 3 4
  336. extern __ssize_t __getdelim (char **__restrict __lineptr,
  337. size_t *__restrict __n, int __delimiter,
  338. FILE *__restrict __stream) ;
  339. extern __ssize_t getdelim (char **__restrict __lineptr,
  340. size_t *__restrict __n, int __delimiter,
  341. FILE *__restrict __stream) ;
  342. extern __ssize_t getline (char **__restrict __lineptr,
  343. size_t *__restrict __n,
  344. FILE *__restrict __stream) ;
  345. extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
  346. extern int puts (__const char *__s);
  347. extern int ungetc (int __c, FILE *__stream);
  348. extern size_t fread (void *__restrict __ptr, size_t __size,
  349. size_t __n, FILE *__restrict __stream) ;
  350. extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
  351. size_t __n, FILE *__restrict __s);
  352. # 734 "/usr/include/stdio.h" 3 4
  353. extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
  354. size_t __n, FILE *__restrict __stream) ;
  355. extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
  356. size_t __n, FILE *__restrict __stream);
  357. extern int fseek (FILE *__stream, long int __off, int __whence);
  358. extern long int ftell (FILE *__stream) ;
  359. extern void rewind (FILE *__stream);
  360. # 770 "/usr/include/stdio.h" 3 4
  361. extern int fseeko (FILE *__stream, __off_t __off, int __whence);
  362. extern __off_t ftello (FILE *__stream) ;
  363. # 789 "/usr/include/stdio.h" 3 4
  364. extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
  365. extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
  366. # 812 "/usr/include/stdio.h" 3 4
  367. # 821 "/usr/include/stdio.h" 3 4
  368. extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
  369. extern int feof (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
  370. extern int ferror (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
  371. extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
  372. extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
  373. extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
  374. extern void perror (__const char *__s);
  375. # 1 "/usr/include/i386-linux-gnu/bits/sys_errlist.h" 1 3 4
  376. # 27 "/usr/include/i386-linux-gnu/bits/sys_errlist.h" 3 4
  377. extern int sys_nerr;
  378. extern __const char *__const sys_errlist[];
  379. # 851 "/usr/include/stdio.h" 2 3 4
  380. extern int fileno (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
  381. extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
  382. # 870 "/usr/include/stdio.h" 3 4
  383. extern FILE *popen (__const char *__command, __const char *__modes) ;
  384. extern int pclose (FILE *__stream);
  385. extern char *ctermid (char *__s) __attribute__ ((__nothrow__ , __leaf__));
  386. # 910 "/usr/include/stdio.h" 3 4
  387. extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
  388. extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
  389. extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
  390. # 940 "/usr/include/stdio.h" 3 4
  391. # 2 "hello.c" 2
  392. int main(void)
  393. {
  394. printf("Hello World!\n");
  395. return 0;
  396. }

后面那条指令,是直接在命令行窗口中输出预处理后的代码. 在本例中,预处理的结果就是将 stdio.h 文件中的内容插入到 hello.c 中了。