使用gcc编译C程序

2022/2/6 12:13:05

本文主要是介绍使用gcc编译C程序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、安装gcc

  sudo pacman -S gcc    //基本都默认安装了

  也可以源码安装最新版本

  gcc  --version        //查看安装版本

  或者gcc  -v

2、常用编译C代码:

  gcc  -Wall fileName.c      //默认生成可执行文件a.out,若当前目录下已有a.out则自动覆盖

  或者gcc  -Wall fileName.c  -o fileName  //通过-o选项生成指定名称fileName的可执行文件

3、控制编译过程,逐步实现:  

 1 #include <stdio.h>
 2
 3 int main(int argc, char **argv)
 4 {
 5     //program c no out function, lib printf function
 6     printf("Hello world!\n");
 7
 8     return 0;
 9 }

  1)、预处理

    gcc  -E fileName.c -o fileName.i      //删除注释  

  1 # 0 "hello.c"
  2 # 0 "<built-in>"
  3 # 0 "<命令行>"
  4 # 1 "/usr/include/stdc-predef.h" 1 3 4
  5 # 0 "<命令行>" 2
  6 # 1 "hello.c"
  7 # 1 "/usr/include/stdio.h" 1 3 4
  8 # 27 "/usr/include/stdio.h" 3 4
  9 # 1 "/usr/include/bits/libc-header-start.h" 1 3 4
 10 # 33 "/usr/include/bits/libc-header-start.h" 3 4
 11 # 1 "/usr/include/features.h" 1 3 4
 12 # 473 "/usr/include/features.h" 3 4
 13 # 1 "/usr/include/sys/cdefs.h" 1 3 4
 14 # 462 "/usr/include/sys/cdefs.h" 3 4
 15 # 1 "/usr/include/bits/wordsize.h" 1 3 4
 16 # 463 "/usr/include/sys/cdefs.h" 2 3 4
 17 # 1 "/usr/include/bits/long-double.h" 1 3 4
 18 # 464 "/usr/include/sys/cdefs.h" 2 3 4
 19 # 474 "/usr/include/features.h" 2 3 4
 20 # 497 "/usr/include/features.h" 3 4
 21 # 1 "/usr/include/gnu/stubs.h" 1 3 4
 22 # 10 "/usr/include/gnu/stubs.h" 3 4
 23 # 1 "/usr/include/gnu/stubs-64.h" 1 3 4
 24 # 11 "/usr/include/gnu/stubs.h" 2 3 4
 25 # 498 "/usr/include/features.h" 2 3 4
 26 # 34 "/usr/include/bits/libc-header-start.h" 2 3 4
 27 # 28 "/usr/include/stdio.h" 2 3 4
 28
 29
 30
 31
 32
 33 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include/stddef.h" 1 3 4
 34 # 209 "/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include/stddef.h" 3 4
 35
 36 # 209 "/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include/stddef.h" 3 4
 37 typedef long unsigned int size_t;
 38 # 34 "/usr/include/stdio.h" 2 3 4
 39
 40
 41 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include/stdarg.h" 1 3 4
 42 # 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include/stdarg.h" 3 4
 43 typedef __builtin_va_list __gnuc_va_list;
 44 # 37 "/usr/include/stdio.h" 2 3 4
 45
 46 # 1 "/usr/include/bits/types.h" 1 3 4
 47 # 27 "/usr/include/bits/types.h" 3 4
 48 # 1 "/usr/include/bits/wordsize.h" 1 3 4
 49 # 28 "/usr/include/bits/types.h" 2 3 4
 50 # 1 "/usr/include/bits/timesize.h" 1 3 4
 51 # 29 "/usr/include/bits/types.h" 2 3 4
 52
 53
 54 typedef unsigned char __u_char;
 55 typedef unsigned short int __u_short;
 56 typedef unsigned int __u_int;
 57 typedef unsigned long int __u_long;
 58
 59
 60 typedef signed char __int8_t;
 61 typedef unsigned char __uint8_t;
 62 typedef signed short int __int16_t;
 63 typedef unsigned short int __uint16_t;
 64 typedef signed int __int32_t;
 65 typedef unsigned int __uint32_t;
 66
 67 typedef signed long int __int64_t;
 68 typedef unsigned long int __uint64_t;
 69
 70
 71
 72
 73
 74
 75 typedef __int8_t __int_least8_t;
 76 typedef __uint8_t __uint_least8_t;
 77 typedef __int16_t __int_least16_t;
 78 typedef __uint16_t __uint_least16_t;
 79 typedef __int32_t __int_least32_t;
 80 typedef __uint32_t __uint_least32_t;
 81 typedef __int64_t __int_least64_t;
 82 typedef __uint64_t __uint_least64_t;
 83
 84
 85
 86 typedef long int __quad_t;
 87 typedef unsigned long int __u_quad_t;
 88
 89
 90
 91
 92
 93
 94
 95 typedef long int __intmax_t;
 96 typedef unsigned long int __uintmax_t;
 97 # 141 "/usr/include/bits/types.h" 3 4
 98 # 1 "/usr/include/bits/typesizes.h" 1 3 4
 99 # 142 "/usr/include/bits/types.h" 2 3 4
100 # 1 "/usr/include/bits/time64.h" 1 3 4
101 # 143 "/usr/include/bits/types.h" 2 3 4
102
103
104 typedef unsigned long int __dev_t;
105 typedef unsigned int __uid_t;
106 typedef unsigned int __gid_t;
107 typedef unsigned long int __ino_t;
108 typedef unsigned long int __ino64_t;
109 typedef unsigned int __mode_t;
110 typedef unsigned long int __nlink_t;
111 typedef long int __off_t;
112 typedef long int __off64_t;
113 typedef int __pid_t;
114 typedef struct { int __val[2]; } __fsid_t;
115 typedef long int __clock_t;
116 typedef unsigned long int __rlim_t;
117 typedef unsigned long int __rlim64_t;
118 typedef unsigned int __id_t;
119 typedef long int __time_t;
120 typedef unsigned int __useconds_t;
121 typedef long int __suseconds_t;
122 typedef long int __suseconds64_t;
123
124 typedef int __daddr_t;
125 typedef int __key_t;
126
127
128 typedef int __clockid_t;
129
130
131 typedef void * __timer_t;
132
133
134 typedef long int __blksize_t;
135
136
137
138
139 typedef long int __blkcnt_t;
140 typedef long int __blkcnt64_t;
141
142
143 typedef unsigned long int __fsblkcnt_t;
144 typedef unsigned long int __fsblkcnt64_t;
145
146
147 typedef unsigned long int __fsfilcnt_t;
148 typedef unsigned long int __fsfilcnt64_t;
149
150
151 typedef long int __fsword_t;
152
153 typedef long int __ssize_t;
154
155
156 typedef long int __syscall_slong_t;
157
158 typedef unsigned long int __syscall_ulong_t;
159
160
161
162 typedef __off64_t __loff_t;
163 typedef char *__caddr_t;
164
165
166 typedef long int __intptr_t;
167
168
169 typedef unsigned int __socklen_t;
170
171
172
173
174 typedef int __sig_atomic_t;
175 # 39 "/usr/include/stdio.h" 2 3 4
176 # 1 "/usr/include/bits/types/__fpos_t.h" 1 3 4
177
178
179
180
181 # 1 "/usr/include/bits/types/__mbstate_t.h" 1 3 4
182 # 13 "/usr/include/bits/types/__mbstate_t.h" 3 4
183 typedef struct
184 {
185   int __count;
186   union
187   {
188     unsigned int __wch;
189     char __wchb[4];
190   } __value;
191 } __mbstate_t;
192 # 6 "/usr/include/bits/types/__fpos_t.h" 2 3 4
193
194
195
196
197 typedef struct _G_fpos_t
198 {
199   __off_t __pos;
200   __mbstate_t __state;
201 } __fpos_t;
202 # 40 "/usr/include/stdio.h" 2 3 4
203 # 1 "/usr/include/bits/types/__fpos64_t.h" 1 3 4
204 # 10 "/usr/include/bits/types/__fpos64_t.h" 3 4
205 typedef struct _G_fpos64_t
206 {
207   __off64_t __pos;
208   __mbstate_t __state;
209 } __fpos64_t;
210 # 41 "/usr/include/stdio.h" 2 3 4
211 # 1 "/usr/include/bits/types/__FILE.h" 1 3 4
212
213
214
215 struct _IO_FILE;
216 typedef struct _IO_FILE __FILE;
217 # 42 "/usr/include/stdio.h" 2 3 4
218 # 1 "/usr/include/bits/types/FILE.h" 1 3 4
219
220
221
222 struct _IO_FILE;
223
224
225 typedef struct _IO_FILE FILE;
226 # 43 "/usr/include/stdio.h" 2 3 4
227 # 1 "/usr/include/bits/types/struct_FILE.h" 1 3 4
228 # 35 "/usr/include/bits/types/struct_FILE.h" 3 4
229 struct _IO_FILE;
230 struct _IO_marker;
231 struct _IO_codecvt;
232 struct _IO_wide_data;
233
234
235
236
237 typedef void _IO_lock_t;
238
239
240
241
242
243 struct _IO_FILE
244 {
245   int _flags;
246
247
248   char *_IO_read_ptr;
249   char *_IO_read_end;
250   char *_IO_read_base;
251   char *_IO_write_base;
252   char *_IO_write_ptr;
253   char *_IO_write_end;
254   char *_IO_buf_base;
255   char *_IO_buf_end;
256
257
258   char *_IO_save_base;
259   char *_IO_backup_base;
260   char *_IO_save_end;
261
262   struct _IO_marker *_markers;
263
264   struct _IO_FILE *_chain;
265
266   int _fileno;
267   int _flags2;
268   __off_t _old_offset;
269
270
271   unsigned short _cur_column;
272   signed char _vtable_offset;
273   char _shortbuf[1];
274
275   _IO_lock_t *_lock;
276
277
278
279
280
281
282
283   __off64_t _offset;
284
285   struct _IO_codecvt *_codecvt;
286   struct _IO_wide_data *_wide_data;
287   struct _IO_FILE *_freeres_list;
288   void *_freeres_buf;
289   size_t __pad5;
290   int _mode;
291
292   char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
293 };
294 # 44 "/usr/include/stdio.h" 2 3 4
295 # 52 "/usr/include/stdio.h" 3 4
296 typedef __gnuc_va_list va_list;
297 # 63 "/usr/include/stdio.h" 3 4
298 typedef __off_t off_t;
299 # 77 "/usr/include/stdio.h" 3 4
300 typedef __ssize_t ssize_t;
301
302
303
304
305
306
307 typedef __fpos_t fpos_t;
308 # 133 "/usr/include/stdio.h" 3 4
309 # 1 "/usr/include/bits/stdio_lim.h" 1 3 4
310 # 134 "/usr/include/stdio.h" 2 3 4
311
312
313
314 extern FILE *stdin;
315 extern FILE *stdout;
316 extern FILE *stderr;
317
318
319
320
321
322
323 extern int remove (const char *__filename) __attribute__ ((__nothrow__ , __leaf__));
324
325 extern int rename (const char *__old, const char *__new) __attribute__ ((__nothrow__ , __leaf__));
326
327
328
329 extern int renameat (int __oldfd, const char *__old, int __newfd,
330        const char *__new) __attribute__ ((__nothrow__ , __leaf__));
331 # 173 "/usr/include/stdio.h" 3 4
332 extern FILE *tmpfile (void) ;
333 # 187 "/usr/include/stdio.h" 3 4
334 extern char *tmpnam (char *__s) __attribute__ ((__nothrow__ , __leaf__)) ;
335
336
337
338
339 extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__ , __leaf__)) ;
340 # 204 "/usr/include/stdio.h" 3 4
341 extern char *tempnam (const char *__dir, const char *__pfx)
342      __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) ;
343
344
345
346
347
348
349
350 extern int fclose (FILE *__stream);
351
352
353
354
355 extern int fflush (FILE *__stream);
356 # 227 "/usr/include/stdio.h" 3 4
357 extern int fflush_unlocked (FILE *__stream);
358 # 246 "/usr/include/stdio.h" 3 4
359 extern FILE *fopen (const char *__restrict __filename,
360       const char *__restrict __modes) ;
361
362
363
364
365 extern FILE *freopen (const char *__restrict __filename,
366         const char *__restrict __modes,
367         FILE *__restrict __stream) ;
368 # 279 "/usr/include/stdio.h" 3 4
369 extern FILE *fdopen (int __fd, const char *__modes) __attribute__ ((__nothrow__ , __leaf__)) ;
370 # 292 "/usr/include/stdio.h" 3 4
371 extern FILE *fmemopen (void *__s, size_t __len, const char *__modes)
372   __attribute__ ((__nothrow__ , __leaf__)) ;
373
374
375
376
377 extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__ , __leaf__)) ;
378
379
380
381
382
383 extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__));
384
385
386
387 extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
388       int __modes, size_t __n) __attribute__ ((__nothrow__ , __leaf__));
389
390
391
392
393 extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
394          size_t __size) __attribute__ ((__nothrow__ , __leaf__));
395
396
397 extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
398
399
400
401
402
403
404
405 extern int fprintf (FILE *__restrict __stream,
406       const char *__restrict __format, ...);
407
408
409
410
411 extern int printf (const char *__restrict __format, ...);
412
413 extern int sprintf (char *__restrict __s,
414       const char *__restrict __format, ...) __attribute__ ((__nothrow__));
415
416
417
418
419
420 extern int vfprintf (FILE *__restrict __s, const char *__restrict __format,
421        __gnuc_va_list __arg);
422
423
424
425
426 extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg);
427
428 extern int vsprintf (char *__restrict __s, const char *__restrict __format,
429        __gnuc_va_list __arg) __attribute__ ((__nothrow__));
430
431
432
433 extern int snprintf (char *__restrict __s, size_t __maxlen,
434        const char *__restrict __format, ...)
435      __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
436
437 extern int vsnprintf (char *__restrict __s, size_t __maxlen,
438         const char *__restrict __format, __gnuc_va_list __arg)
439      __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
440 # 379 "/usr/include/stdio.h" 3 4
441 extern int vdprintf (int __fd, const char *__restrict __fmt,
442        __gnuc_va_list __arg)
443      __attribute__ ((__format__ (__printf__, 2, 0)));
444 extern int dprintf (int __fd, const char *__restrict __fmt, ...)
445      __attribute__ ((__format__ (__printf__, 2, 3)));
446
447
448
449
450
451
452
453 extern int fscanf (FILE *__restrict __stream,
454      const char *__restrict __format, ...) ;
455
456
457
458
459 extern int scanf (const char *__restrict __format, ...) ;
460
461 extern int sscanf (const char *__restrict __s,
462      const char *__restrict __format, ...) __attribute__ ((__nothrow__ , __leaf__));
463
464
465
466
467
468 # 1 "/usr/include/bits/floatn.h" 1 3 4
469 # 119 "/usr/include/bits/floatn.h" 3 4
470 # 1 "/usr/include/bits/floatn-common.h" 1 3 4
471 # 24 "/usr/include/bits/floatn-common.h" 3 4
472 # 1 "/usr/include/bits/long-double.h" 1 3 4
473 # 25 "/usr/include/bits/floatn-common.h" 2 3 4
474 # 120 "/usr/include/bits/floatn.h" 2 3 4
475 # 407 "/usr/include/stdio.h" 2 3 4
476
477
478
479 extern int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...) __asm__ ("" "__isoc99_fscanf")
480
481                                ;
482 extern int scanf (const char *__restrict __format, ...) __asm__ ("" "__isoc99_scanf")
483                               ;
484 extern int sscanf (const char *__restrict __s, const char *__restrict __format, ...) __asm__ ("" "__isoc99_sscanf") __attribute__ ((__nothrow__ , __leaf__))
485
486                       ;
487 # 435 "/usr/include/stdio.h" 3 4
488 extern int vfscanf (FILE *__restrict __s, const char *__restrict __format,
489       __gnuc_va_list __arg)
490      __attribute__ ((__format__ (__scanf__, 2, 0))) ;
491
492
493
494
495
496 extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg)
497      __attribute__ ((__format__ (__scanf__, 1, 0))) ;
498
499
500 extern int vsscanf (const char *__restrict __s,
501       const char *__restrict __format, __gnuc_va_list __arg)
502      __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
503
504
505
506
507
508 extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfscanf")
509
510
511
512      __attribute__ ((__format__ (__scanf__, 2, 0))) ;
513 extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vscanf")
514
515      __attribute__ ((__format__ (__scanf__, 1, 0))) ;
516 extern int vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vsscanf") __attribute__ ((__nothrow__ , __    leaf__))
517
518
519
520      __attribute__ ((__format__ (__scanf__, 2, 0)));
521 # 489 "/usr/include/stdio.h" 3 4
522 extern int fgetc (FILE *__stream);
523 extern int getc (FILE *__stream);
524
525
526
527
528
529 extern int getchar (void);
530
531
532
533
534
535
536 extern int getc_unlocked (FILE *__stream);
537 extern int getchar_unlocked (void);
538 # 514 "/usr/include/stdio.h" 3 4
539 extern int fgetc_unlocked (FILE *__stream);
540 # 525 "/usr/include/stdio.h" 3 4
541 extern int fputc (int __c, FILE *__stream);
542 extern int putc (int __c, FILE *__stream);
543
544
545
546
547
548 extern int putchar (int __c);
549 # 541 "/usr/include/stdio.h" 3 4
550 extern int fputc_unlocked (int __c, FILE *__stream);
551
552
553
554
555
556
557
558 extern int putc_unlocked (int __c, FILE *__stream);
559 extern int putchar_unlocked (int __c);
560
561
562
563
564
565
566 extern int getw (FILE *__stream);
567
568
569 extern int putw (int __w, FILE *__stream);
570
571
572
573
574
575
576
577 extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
578      __attribute__ ((__access__ (__write_only__, 1, 2)));
579 # 608 "/usr/include/stdio.h" 3 4
580 extern __ssize_t __getdelim (char **__restrict __lineptr,
581                              size_t *__restrict __n, int __delimiter,
582                              FILE *__restrict __stream) ;
583 extern __ssize_t getdelim (char **__restrict __lineptr,
584                            size_t *__restrict __n, int __delimiter,
585                            FILE *__restrict __stream) ;
586
587
588
589
590
591
592
593 extern __ssize_t getline (char **__restrict __lineptr,
594                           size_t *__restrict __n,
595                           FILE *__restrict __stream) ;
596
597
598
599
600
601
602
603 extern int fputs (const char *__restrict __s, FILE *__restrict __stream);
604
605
606
607
608
609 extern int puts (const char *__s);
610
611
612
613
614
615
616 extern int ungetc (int __c, FILE *__stream);
617
618
619
620
621
622
623 extern size_t fread (void *__restrict __ptr, size_t __size,
624        size_t __n, FILE *__restrict __stream) ;
625
626
627
628
629 extern size_t fwrite (const void *__restrict __ptr, size_t __size,
630         size_t __n, FILE *__restrict __s);
631 # 678 "/usr/include/stdio.h" 3 4
632 extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
633          size_t __n, FILE *__restrict __stream) ;
634 extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size,
635           size_t __n, FILE *__restrict __stream);
636
637
638
639
640
641
642
643 extern int fseek (FILE *__stream, long int __off, int __whence);
644
645
646
647
648 extern long int ftell (FILE *__stream) ;
649
650
651
652
653 extern void rewind (FILE *__stream);
654 # 712 "/usr/include/stdio.h" 3 4
655 extern int fseeko (FILE *__stream, __off_t __off, int __whence);
656
657
658
659
660 extern __off_t ftello (FILE *__stream) ;
661 # 736 "/usr/include/stdio.h" 3 4
662 extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
663
664
665
666
667 extern int fsetpos (FILE *__stream, const fpos_t *__pos);
668 # 762 "/usr/include/stdio.h" 3 4
669 extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
670
671 extern int feof (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
672
673 extern int ferror (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
674
675
676
677 extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
678 extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
679 extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
680
681
682
683
684
685
686
687 extern void perror (const char *__s);
688
689
690
691
692 extern int fileno (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
693
694
695
696
697 extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
698 # 799 "/usr/include/stdio.h" 3 4
699 extern FILE *popen (const char *__command, const char *__modes) ;
700
701
702
703
704
705 extern int pclose (FILE *__stream);
706
707
708
709
710
711 extern char *ctermid (char *__s) __attribute__ ((__nothrow__ , __leaf__));
712 # 839 "/usr/include/stdio.h" 3 4
713 extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
714
715
716
717 extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
718
719
720 extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
721 # 857 "/usr/include/stdio.h" 3 4
722 extern int __uflow (FILE *);
723 extern int __overflow (FILE *, int);
724 # 874 "/usr/include/stdio.h" 3 4
725
726 # 2 "hello.c" 2
727
728
729 # 3 "hello.c"
730 int main(int argc, char **argv)
731 {
732
733  printf("Hello world!\n");
734
735  return 0;
736 }

    gcc  -E -C fileName.c -o fileName.i    //不删除注释  

   1 # 0 "hello.c"
   2 # 0 "<built-in>"
   3 # 0 "<命令行>"
   4 # 1 "/usr/include/stdc-predef.h" 1 3 4
   5 
   6 # 1 "/usr/include/stdc-predef.h" 3 4
   7 /* Copyright (C) 1991-2021 Free Software Foundation, Inc.
   8    This file is part of the GNU C Library.
   9 
  10    The GNU C Library is free software; you can redistribute it and/or
  11    modify it under the terms of the GNU Lesser General Public
  12    License as published by the Free Software Foundation; either
  13    version 2.1 of the License, or (at your option) any later version.
  14 
  15    The GNU C Library is distributed in the hope that it will be useful,
  16    but WITHOUT ANY WARRANTY; without even the implied warranty of
  17    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  18    Lesser General Public License for more details.
  19 
  20    You should have received a copy of the GNU Lesser General Public
  21    License along with the GNU C Library; if not, see
  22    <https://www.gnu.org/licenses/>.  */
  23 
  24 
  25 
  26 
  27 /* This header is separate from features.h so that the compiler can
  28    include it implicitly at the start of every compilation.  It must
  29    not itself include <features.h> or any other header that includes
  30    <features.h> because the implicit include comes before any feature
  31    test macros that may be defined in a source file before it first
  32    explicitly includes a system header.  GCC knows the name of this
  33    header in order to preinclude it.  */
  34 
  35 /* glibc's intent is to support the IEC 559 math functionality, real
  36    and complex.  If the GCC (4.9 and later) predefined macros
  37    specifying compiler intent are available, use them to determine
  38    whether the overall intent is to support these features; otherwise,
  39    presume an older compiler has intent to support these features and
  40    define these macros by default.  */
  41 # 52 "/usr/include/stdc-predef.h" 3 4
  42 /* wchar_t uses Unicode 10.0.0.  Version 10.0 of the Unicode Standard is
  43    synchronized with ISO/IEC 10646:2017, fifth edition, plus
  44    the following additions from Amendment 1 to the fifth edition:
  45    - 56 emoji characters
  46    - 285 hentaigana
  47    - 3 additional Zanabazar Square characters */
  48 # 0 "<命令行>" 2
  49 # 1 "hello.c"
  50 # 1 "/usr/include/stdio.h" 1 3 4
  51 /* Define ISO C stdio on top of C++ iostreams.
  52    Copyright (C) 1991-2021 Free Software Foundation, Inc.
  53    This file is part of the GNU C Library.
  54 
  55    The GNU C Library is free software; you can redistribute it and/or
  56    modify it under the terms of the GNU Lesser General Public
  57    License as published by the Free Software Foundation; either
  58    version 2.1 of the License, or (at your option) any later version.
  59 
  60    The GNU C Library is distributed in the hope that it will be useful,
  61    but WITHOUT ANY WARRANTY; without even the implied warranty of
  62    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  63    Lesser General Public License for more details.
  64 
  65    You should have received a copy of the GNU Lesser General Public
  66    License along with the GNU C Library; if not, see
  67    <https://www.gnu.org/licenses/>.  */
  68 
  69 /*
  70  *    ISO C99 Standard: 7.19 Input/output    <stdio.h>
  71  */
  72 
  73 
  74 
  75 
  76 
  77 # 1 "/usr/include/bits/libc-header-start.h" 1 3 4
  78 /* Handle feature test macros at the start of a header.
  79    Copyright (C) 2016-2021 Free Software Foundation, Inc.
  80    This file is part of the GNU C Library.
  81 
  82    The GNU C Library is free software; you can redistribute it and/or
  83    modify it under the terms of the GNU Lesser General Public
  84    License as published by the Free Software Foundation; either
  85    version 2.1 of the License, or (at your option) any later version.
  86 
  87    The GNU C Library is distributed in the hope that it will be useful,
  88    but WITHOUT ANY WARRANTY; without even the implied warranty of
  89    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  90    Lesser General Public License for more details.
  91 
  92    You should have received a copy of the GNU Lesser General Public
  93    License along with the GNU C Library; if not, see
  94    <https://www.gnu.org/licenses/>.  */
  95 
  96 /* This header is internal to glibc and should not be included outside
  97    of glibc headers.  Headers including it must define
  98    __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first.  This header
  99    cannot have multiple include guards because ISO C feature test
 100    macros depend on the definition of the macro when an affected
 101    header is included, not when the first system header is
 102    included.  */
 103 
 104 
 105 
 106 
 107 
 108 
 109 
 110 # 1 "/usr/include/features.h" 1 3 4
 111 /* Copyright (C) 1991-2021 Free Software Foundation, Inc.
 112    This file is part of the GNU C Library.
 113 
 114    The GNU C Library is free software; you can redistribute it and/or
 115    modify it under the terms of the GNU Lesser General Public
 116    License as published by the Free Software Foundation; either
 117    version 2.1 of the License, or (at your option) any later version.
 118 
 119    The GNU C Library is distributed in the hope that it will be useful,
 120    but WITHOUT ANY WARRANTY; without even the implied warranty of
 121    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 122    Lesser General Public License for more details.
 123 
 124    You should have received a copy of the GNU Lesser General Public
 125    License along with the GNU C Library; if not, see
 126    <https://www.gnu.org/licenses/>.  */
 127 
 128 
 129 
 130 
 131 /* These are defined by the user (or the compiler)
 132    to specify the desired environment:
 133 
 134    __STRICT_ANSI__    ISO Standard C.
 135    _ISOC99_SOURCE    Extensions to ISO C89 from ISO C99.
 136    _ISOC11_SOURCE    Extensions to ISO C99 from ISO C11.
 137    _ISOC2X_SOURCE    Extensions to ISO C99 from ISO C2X.
 138    __STDC_WANT_LIB_EXT2__
 139             Extensions to ISO C99 from TR 27431-2:2010.
 140    __STDC_WANT_IEC_60559_BFP_EXT__
 141             Extensions to ISO C11 from TS 18661-1:2014.
 142    __STDC_WANT_IEC_60559_FUNCS_EXT__
 143             Extensions to ISO C11 from TS 18661-4:2015.
 144    __STDC_WANT_IEC_60559_TYPES_EXT__
 145             Extensions to ISO C11 from TS 18661-3:2015.
 146 
 147    _POSIX_SOURCE    IEEE Std 1003.1.
 148    _POSIX_C_SOURCE    If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
 149             if >=199309L, add IEEE Std 1003.1b-1993;
 150             if >=199506L, add IEEE Std 1003.1c-1995;
 151             if >=200112L, all of IEEE 1003.1-2004
 152             if >=200809L, all of IEEE 1003.1-2008
 153    _XOPEN_SOURCE    Includes POSIX and XPG things.  Set to 500 if
 154             Single Unix conformance is wanted, to 600 for the
 155             sixth revision, to 700 for the seventh revision.
 156    _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
 157    _LARGEFILE_SOURCE    Some more functions for correct standard I/O.
 158    _LARGEFILE64_SOURCE    Additional functionality from LFS for large files.
 159    _FILE_OFFSET_BITS=N    Select default filesystem interface.
 160    _ATFILE_SOURCE    Additional *at interfaces.
 161    _GNU_SOURCE        All of the above, plus GNU extensions.
 162    _DEFAULT_SOURCE    The default set of features (taking precedence over
 163             __STRICT_ANSI__).
 164 
 165    _FORTIFY_SOURCE    Add security hardening to many library functions.
 166             Set to 1 or 2; 2 performs stricter checks than 1.
 167 
 168    _REENTRANT, _THREAD_SAFE
 169             Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
 170 
 171    The `-ansi' switch to the GNU C compiler, and standards conformance
 172    options such as `-std=c99', define __STRICT_ANSI__.  If none of
 173    these are defined, or if _DEFAULT_SOURCE is defined, the default is
 174    to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
 175    200809L, as well as enabling miscellaneous functions from BSD and
 176    SVID.  If more than one of these are defined, they accumulate.  For
 177    example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
 178    give you ISO C, 1003.1, and 1003.2, but nothing else.
 179 
 180    These are defined by this file and are used by the
 181    header files to decide what to declare or define:
 182 
 183    __GLIBC_USE (F)    Define things from feature set F.  This is defined
 184             to 1 or 0; the subsequent macros are either defined
 185             or undefined, and those tests should be moved to
 186             __GLIBC_USE.
 187    __USE_ISOC11        Define ISO C11 things.
 188    __USE_ISOC99        Define ISO C99 things.
 189    __USE_ISOC95        Define ISO C90 AMD1 (C95) things.
 190    __USE_ISOCXX11    Define ISO C++11 things.
 191    __USE_POSIX        Define IEEE Std 1003.1 things.
 192    __USE_POSIX2        Define IEEE Std 1003.2 things.
 193    __USE_POSIX199309    Define IEEE Std 1003.1, and .1b things.
 194    __USE_POSIX199506    Define IEEE Std 1003.1, .1b, .1c and .1i things.
 195    __USE_XOPEN        Define XPG things.
 196    __USE_XOPEN_EXTENDED    Define X/Open Unix things.
 197    __USE_UNIX98        Define Single Unix V2 things.
 198    __USE_XOPEN2K        Define XPG6 things.
 199    __USE_XOPEN2KXSI     Define XPG6 XSI things.
 200    __USE_XOPEN2K8       Define XPG7 things.
 201    __USE_XOPEN2K8XSI    Define XPG7 XSI things.
 202    __USE_LARGEFILE    Define correct standard I/O things.
 203    __USE_LARGEFILE64    Define LFS things with separate names.
 204    __USE_FILE_OFFSET64    Define 64bit interface as default.
 205    __USE_MISC        Define things from 4.3BSD or System V Unix.
 206    __USE_ATFILE        Define *at interfaces and AT_* constants for them.
 207    __USE_GNU        Define GNU extensions.
 208    __USE_FORTIFY_LEVEL    Additional security measures used, according to level.
 209 
 210    The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
 211    defined by this file unconditionally.  `__GNU_LIBRARY__' is provided
 212    only for compatibility.  All new code should use the other symbols
 213    to test for features.
 214 
 215    All macros listed above as possibly being defined by this file are
 216    explicitly undefined if they are not explicitly defined.
 217    Feature-test macros that are not defined by the user or compiler
 218    but are implied by the other feature-test macros defined (or by the
 219    lack of any definitions) are defined by the file.
 220 
 221    ISO C feature test macros depend on the definition of the macro
 222    when an affected header is included, not when the first system
 223    header is included, and so they are handled in
 224    <bits/libc-header-start.h>, which does not have a multiple include
 225    guard.  Feature test macros that can be handled from the first
 226    system header included are handled here.  */
 227 
 228 
 229 /* Undefine everything, so we get a clean slate.  */
 230 # 147 "/usr/include/features.h" 3 4
 231 /* Suppress kernel-name space pollution unless user expressedly asks
 232    for it.  */
 233 
 234 
 235 
 236 
 237 /* Convenience macro to test the version of gcc.
 238    Use like this:
 239    #if __GNUC_PREREQ (2,8)
 240    ... code requiring gcc 2.8 or later ...
 241    #endif
 242    Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
 243    added in 2.0.  */
 244 
 245 
 246 
 247 
 248 
 249 
 250 
 251 /* Similarly for clang.  Features added to GCC after version 4.2 may
 252    or may not also be available in clang, and clang's definitions of
 253    __GNUC(_MINOR)__ are fixed at 4 and 2 respectively.  Not all such
 254    features can be queried via __has_extension/__has_feature.  */
 255 
 256 
 257 
 258 
 259 
 260 
 261 
 262 /* Whether to use feature set F.  */
 263 
 264 
 265 /* _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
 266    _DEFAULT_SOURCE.  If _DEFAULT_SOURCE is present we do not
 267    issue a warning; the expectation is that the source is being
 268    transitioned to use the new macro.  */
 269 
 270 
 271 
 272 
 273 
 274 
 275 
 276 /* If _GNU_SOURCE was defined by the user, turn on all the other features.  */
 277 # 218 "/usr/include/features.h" 3 4
 278 /* If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
 279    define _DEFAULT_SOURCE.  */
 280 # 230 "/usr/include/features.h" 3 4
 281 /* This is to enable the ISO C2X extension.  */
 282 
 283 
 284 
 285 
 286 
 287 
 288 
 289 /* This is to enable the ISO C11 extension.  */
 290 
 291 
 292 
 293 
 294 
 295 /* This is to enable the ISO C99 extension.  */
 296 
 297 
 298 
 299 
 300 
 301 
 302 /* This is to enable the ISO C90 Amendment 1:1995 extension.  */
 303 # 271 "/usr/include/features.h" 3 4
 304 /* If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
 305    is defined, use POSIX.1-2008 (or another version depending on
 306    _XOPEN_SOURCE).  */
 307 # 300 "/usr/include/features.h" 3 4
 308 /* Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
 309    defined in all multithreaded code.  GNU libc has not required this
 310    for many years.  We now treat them as compatibility synonyms for
 311    _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
 312    comprehensive support for multithreaded code.  Using them never
 313    lowers the selected level of POSIX conformance, only raises it.  */
 314 # 418 "/usr/include/features.h" 3 4
 315 /* The function 'gets' existed in C89, but is impossible to use
 316    safely.  It has been removed from ISO C11 and ISO C++14.  Note: for
 317    compatibility with various implementations of <cstdio>, this test
 318    must consider only the value of __cplusplus when compiling C++.  */
 319 
 320 
 321 
 322 
 323 
 324 
 325 /* GNU formerly extended the scanf functions with modified format
 326    specifiers %as, %aS, and %a[...] that allocate a buffer for the
 327    input using malloc.  This extension conflicts with ISO C99, which
 328    defines %a as a standalone format specifier that reads a floating-
 329    point number; moreover, POSIX.1-2008 provides the same feature
 330    using the modifier letter 'm' instead (%ms, %mS, %m[...]).
 331 
 332    We now follow C99 unless GNU extensions are active and the compiler
 333    is specifically in C89 or C++98 mode (strict or not).  For
 334    instance, with GCC, -std=gnu11 will have C99-compliant scanf with
 335    or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
 336    old extension.  */
 337 # 449 "/usr/include/features.h" 3 4
 338 /* Get definitions of __STDC_* predefined macros, if the compiler has
 339    not preincluded this header automatically.  */
 340 # 1 "/usr/include/stdc-predef.h" 1 3 4
 341 /* Copyright (C) 1991-2021 Free Software Foundation, Inc.
 342    This file is part of the GNU C Library.
 343 
 344    The GNU C Library is free software; you can redistribute it and/or
 345    modify it under the terms of the GNU Lesser General Public
 346    License as published by the Free Software Foundation; either
 347    version 2.1 of the License, or (at your option) any later version.
 348 
 349    The GNU C Library is distributed in the hope that it will be useful,
 350    but WITHOUT ANY WARRANTY; without even the implied warranty of
 351    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 352    Lesser General Public License for more details.
 353 
 354    You should have received a copy of the GNU Lesser General Public
 355    License along with the GNU C Library; if not, see
 356    <https://www.gnu.org/licenses/>.  */
 357 # 452 "/usr/include/features.h" 2 3 4
 358 
 359 /* This macro indicates that the installed library is the GNU C Library.
 360    For historic reasons the value now is 6 and this will stay from now
 361    on.  The use of this variable is deprecated.  Use __GLIBC__ and
 362    __GLIBC_MINOR__ now (see below) when you want to test for a specific
 363    GNU C library version and use the values in <gnu/lib-names.h> to get
 364    the sonames of the shared libraries.  */
 365 
 366 
 367 
 368 /* Major and minor version number of the GNU C library package.  Use
 369    these macros to test for features in specific releases.  */
 370 
 371 
 372 
 373 
 374 
 375 
 376 /* This is here only because every header file already includes this one.  */
 377 
 378 
 379 # 1 "/usr/include/sys/cdefs.h" 1 3 4
 380 /* Copyright (C) 1992-2021 Free Software Foundation, Inc.
 381    This file is part of the GNU C Library.
 382 
 383    The GNU C Library is free software; you can redistribute it and/or
 384    modify it under the terms of the GNU Lesser General Public
 385    License as published by the Free Software Foundation; either
 386    version 2.1 of the License, or (at your option) any later version.
 387 
 388    The GNU C Library is distributed in the hope that it will be useful,
 389    but WITHOUT ANY WARRANTY; without even the implied warranty of
 390    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 391    Lesser General Public License for more details.
 392 
 393    You should have received a copy of the GNU Lesser General Public
 394    License along with the GNU C Library; if not, see
 395    <https://www.gnu.org/licenses/>.  */
 396 
 397 
 398 
 399 
 400 /* We are almost always included from features.h. */
 401 
 402 
 403 
 404 
 405 /* The GNU libc does not support any K&R compilers or the traditional mode
 406    of ISO C compilers anymore.  Check for some of the combinations not
 407    supported anymore.  */
 408 
 409 
 410 
 411 
 412 /* Some user header file might have defined this before.  */
 413 
 414 
 415 
 416 
 417 
 418 /* All functions, except those with callbacks or those that
 419    synchronize memory, are leaf functions.  */
 420 # 49 "/usr/include/sys/cdefs.h" 3 4
 421 /* GCC can always grok prototypes.  For C++ programs we add throw()
 422    to help it optimize the function calls.  But this only works with
 423    gcc 2.8.x and egcs.  For gcc 3.2 and up we even mark C functions
 424    as non-throwing using a function attribute since programs can use
 425    the -fexceptions options for C code as well.  */
 426 # 92 "/usr/include/sys/cdefs.h" 3 4
 427 /* Compilers that are not clang may object to
 428        #if defined __clang__ && __has_extension(...)
 429    even though they do not need to evaluate the right-hand side of the &&.  */
 430 
 431 
 432 
 433 
 434 
 435 
 436 /* These two macros are not used in glibc anymore.  They are kept here
 437    only because some other projects expect the macros to be defined.  */
 438 
 439 
 440 
 441 /* For these things, GCC behaves the ANSI way normally,
 442    and the non-ANSI way under -traditional.  */
 443 
 444 
 445 
 446 
 447 /* This is not a typedef so `const __ptr_t' does the right thing.  */
 448 
 449 
 450 
 451 /* C++ needs to know that types and declarations are C, not C++.  */
 452 # 126 "/usr/include/sys/cdefs.h" 3 4
 453 /* Fortify support.  */
 454 
 455 
 456 
 457 /* Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available.  */
 458 # 148 "/usr/include/sys/cdefs.h" 3 4
 459 /* Support for flexible arrays.
 460    Headers that should use flexible arrays only if they're "real"
 461    (e.g. only if they won't affect sizeof()) should test
 462    #if __glibc_c99_flexarr_available.  */
 463 # 172 "/usr/include/sys/cdefs.h" 3 4
 464 /* __asm__ ("xyz") is used throughout the headers to rename functions
 465    at the assembly language level.  This is wrapped by the __REDIRECT
 466    macro, in order to support compilers that can do this some other
 467    way.  When compilers don't support asm-names at all, we have to do
 468    preprocessor tricks instead (which don't have exactly the right
 469    semantics, but it's the best we can do).
 470 
 471    Example:
 472    int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); */
 473 # 199 "/usr/include/sys/cdefs.h" 3 4
 474 /*
 475 #elif __SOME_OTHER_COMPILER__
 476 
 477 # define __REDIRECT(name, proto, alias) name proto;     _Pragma("let " #name " = " #alias)
 478 )
 479 */
 480 
 481 
 482 /* GCC has various useful declarations that can be made with the
 483    `__attribute__' syntax.  All of the ways we use this do fine if
 484    they are omitted for compilers that don't understand it. */
 485 
 486 
 487 
 488 
 489 /* At some point during the gcc 2.96 development the `malloc' attribute
 490    for functions was introduced.  We don't want to use it unconditionally
 491    (although this would be possible) since it generates warnings.  */
 492 
 493 
 494 
 495 
 496 
 497 
 498 /* Tell the compiler which arguments to an allocation function
 499    indicate the size of the allocation.  */
 500 
 501 
 502 
 503 
 504 
 505 
 506 
 507 /* At some point during the gcc 2.96 development the `pure' attribute
 508    for functions was introduced.  We don't want to use it unconditionally
 509    (although this would be possible) since it generates warnings.  */
 510 
 511 
 512 
 513 
 514 
 515 
 516 /* This declaration tells the compiler that the value is constant.  */
 517 
 518 
 519 
 520 
 521 
 522 
 523 /* At some point during the gcc 3.1 development the `used' attribute
 524    for functions was introduced.  We don't want to use it unconditionally
 525    (although this would be possible) since it generates warnings.  */
 526 # 259 "/usr/include/sys/cdefs.h" 3 4
 527 /* Since version 3.2, gcc allows marking deprecated functions.  */
 528 
 529 
 530 
 531 
 532 
 533 
 534 /* Since version 4.5, gcc also allows one to specify the message printed
 535    when a deprecated function is used.  clang claims to be gcc 4.2, but
 536    may also support this feature.  */
 537 # 277 "/usr/include/sys/cdefs.h" 3 4
 538 /* At some point during the gcc 2.8 development the `format_arg' attribute
 539    for functions was introduced.  We don't want to use it unconditionally
 540    (although this would be possible) since it generates warnings.
 541    If several `format_arg' attributes are given for the same function, in
 542    gcc-3.0 and older, all but the last one are ignored.  In newer gccs,
 543    all designated arguments are considered.  */
 544 
 545 
 546 
 547 
 548 
 549 
 550 /* At some point during the gcc 2.97 development the `strfmon' format
 551    attribute for functions was introduced.  We don't want to use it
 552    unconditionally (although this would be possible) since it
 553    generates warnings.  */
 554 
 555 
 556 
 557 
 558 
 559 
 560 
 561 /* The nonull function attribute allows to mark pointer parameters which
 562    must not be NULL.  */
 563 
 564 
 565 
 566 
 567 
 568 
 569 /* If fortification mode, we warn about unused results of certain
 570    function calls which can lead to problems.  */
 571 # 323 "/usr/include/sys/cdefs.h" 3 4
 572 /* Forces a function to be always inlined.  */
 573 
 574 /* The Linux kernel defines __always_inline in stddef.h (283d7573), and
 575    it conflicts with this definition.  Therefore undefine it first to
 576    allow either header to be included first.  */
 577 
 578 
 579 
 580 
 581 
 582 
 583 
 584 /* Associate error messages with the source location of the call site rather
 585    than with the source location inside the function.  */
 586 
 587 
 588 
 589 
 590 
 591 
 592 /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
 593    inline semantics, unless -fgnu89-inline is used.  Using __GNUC_STDC_INLINE__
 594    or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
 595    older than 4.3 may define these macros and still not guarantee GNU inlining
 596    semantics.
 597 
 598    clang++ identifies itself as gcc-4.2, but has support for GNU inlining
 599    semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
 600    __GNUC_GNU_INLINE__ macro definitions.  */
 601 # 369 "/usr/include/sys/cdefs.h" 3 4
 602 /* GCC 4.3 and above allow passing all anonymous arguments of an
 603    __extern_always_inline function to some other vararg function.  */
 604 
 605 
 606 
 607 
 608 
 609 /* It is possible to compile containing GCC extensions even if GCC is
 610    run in pedantic mode if the uses are carefully marked using the
 611    `__extension__' keyword.  But this is not generally available before
 612    version 2.8.  */
 613 
 614 
 615 
 616 
 617 /* __restrict is known in EGCS 1.2 and above. */
 618 # 393 "/usr/include/sys/cdefs.h" 3 4
 619 /* ISO C99 also allows to declare arrays as non-overlapping.  The syntax is
 620      array_name[restrict]
 621    GCC 3.1 supports this.  */
 622 # 436 "/usr/include/sys/cdefs.h" 3 4
 623 /* Describes a char array whose address can safely be passed as the first
 624    argument to strncpy and strncat, as the char array is not necessarily
 625    a NUL-terminated string.  */
 626 
 627 
 628 
 629 
 630 
 631 /* Undefine (also defined in libc-symbols.h).  */
 632 
 633 
 634 /* Copies attributes from the declaration or type referenced by
 635    the argument.  */
 636 # 462 "/usr/include/sys/cdefs.h" 3 4
 637 # 1 "/usr/include/bits/wordsize.h" 1 3 4
 638 /* Determine the wordsize from the preprocessor defines.  */
 639 # 13 "/usr/include/bits/wordsize.h" 3 4
 640 /* Both x86-64 and x32 use the 64-bit system call interface.  */
 641 # 463 "/usr/include/sys/cdefs.h" 2 3 4
 642 # 1 "/usr/include/bits/long-double.h" 1 3 4
 643 /* Properties of long double type.  ldbl-96 version.
 644    Copyright (C) 2016-2021 Free Software Foundation, Inc.
 645    This file is part of the GNU C Library.
 646 
 647    The GNU C Library is free software; you can redistribute it and/or
 648    modify it under the terms of the GNU Lesser General Public
 649    License  published by the Free Software Foundation; either
 650    version 2.1 of the License, or (at your option) any later version.
 651 
 652    The GNU C Library is distributed in the hope that it will be useful,
 653    but WITHOUT ANY WARRANTY; without even the implied warranty of
 654    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 655    Lesser General Public License for more details.
 656 
 657    You should have received a copy of the GNU Lesser General Public
 658    License along with the GNU C Library; if not, see
 659    <https://www.gnu.org/licenses/>.  */
 660 
 661 /* long double is distinct from double, so there is nothing to
 662    define here.  */
 663 # 464 "/usr/include/sys/cdefs.h" 2 3 4
 664 # 531 "/usr/include/sys/cdefs.h" 3 4
 665 /* __glibc_macro_warning (MESSAGE) issues warning MESSAGE.  This is
 666    intended for use in preprocessor macros.
 667 
 668    Note: MESSAGE must be a _single_ string; concatenation of string
 669    literals is not supported.  */
 670 # 544 "/usr/include/sys/cdefs.h" 3 4
 671 /* Generic selection (ISO C11) is a C-only feature, available in GCC
 672    since version 4.9.  Previous versions do not provide generic
 673    selection, even though they might set __STDC_VERSION__ to 201112L,
 674    when in -std=c11 mode.  Thus, we must check for !defined __GNUC__
 675    when testing __STDC_VERSION__ for generic selection support.
 676    On the other hand, Clang also defines __GNUC__, so a clang-specific
 677    check is required to enable the use of generic selection.  */
 678 # 562 "/usr/include/sys/cdefs.h" 3 4
 679 /* Designates a 1-based positional argument ref-index of pointer type
 680    that can be used to access size-index elements of the pointed-to
 681    array according to access mode, or at least one element when
 682    size-index is not provided:
 683      access (access-mode, <ref-index> [, <size-index>])  */
 684 
 685 
 686 
 687 
 688 
 689 /* Specify that a function such as setjmp or vfork may return
 690    twice.  */
 691 # 474 "/usr/include/features.h" 2 3 4
 692 
 693 
 694 /* If we don't have __REDIRECT, prototypes will be missing if
 695    __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64]. */
 696 
 697 
 698 
 699 
 700 
 701 
 702 
 703 /* Decide whether we can define 'extern inline' functions in headers.  */
 704 
 705 
 706 
 707 
 708 
 709 
 710 
 711 /* This is here only because every header file already includes this one.
 712    Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
 713    <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
 714    that will always return failure (and set errno to ENOSYS).  */
 715 # 1 "/usr/include/gnu/stubs.h" 1 3 4
 716 /* This file is automatically generated.
 717    This file selects the right generated file of `__stub_FUNCTION' macros
 718    based on the architecture being compiled for.  */
 719 
 720 
 721 
 722 
 723 
 724 
 725 # 1 "/usr/include/gnu/stubs-64.h" 1 3 4
 726 /* This file is automatically generated.
 727    It defines a symbol `__stub_FUNCTION' for each function
 728    in the C library which is a stub, meaning it will fail
 729    every time called, usually setting errno to ENOSYS.  */
 730 # 11 "/usr/include/gnu/stubs.h" 2 3 4
 731 # 498 "/usr/include/features.h" 2 3 4
 732 # 34 "/usr/include/bits/libc-header-start.h" 2 3 4
 733 
 734 /* ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__
 735    macro.  */
 736 # 45 "/usr/include/bits/libc-header-start.h" 3 4
 737 /* ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__
 738    macro.  Most but not all symbols enabled by that macro in TS
 739    18661-1 are enabled unconditionally in C2X; the symbols in Annex F
 740    still require that macro in C2X.  */
 741 # 62 "/usr/include/bits/libc-header-start.h" 3 4
 742 /* ISO/IEC TS 18661-4:2015 defines the
 743    __STDC_WANT_IEC_60559_FUNCS_EXT__ macro.  Other than the reduction
 744    functions, the symbols from this TS are enabled unconditionally in
 745    C2X.  */
 746 # 79 "/usr/include/bits/libc-header-start.h" 3 4
 747 /* ISO/IEC TS 18661-3:2015 defines the
 748    __STDC_WANT_IEC_60559_TYPES_EXT__ macro.  */
 749 # 28 "/usr/include/stdio.h" 2 3 4
 750 
 751 
 752 
 753 
 754 
 755 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include/stddef.h" 1 3 4
 756 /* Copyright (C) 1989-2021 Free Software Foundation, Inc.
 757 
 758 This file is part of GCC.
 759 
 760 GCC is free software; you can redistribute it and/or modify
 761 it under the terms of the GNU General Public License as published by
 762 the Free Software Foundation; either version 3, or (at your option)
 763 any later version.
 764 
 765 GCC is distributed in the hope that it will be useful,
 766 but WITHOUT ANY WARRANTY; without even the implied warranty of
 767 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 768 GNU General Public License for more details.
 769 
 770 Under Section 7 of GPL version 3, you are granted additional
 771 permissions described in the GCC Runtime Library Exception, version
 772 3.1, as published by the Free Software Foundation.
 773 
 774 You should have received a copy of the GNU General Public License and
 775 a copy of the GCC Runtime Library Exception along with this program;
 776 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 777 <http://www.gnu.org/licenses/>.  */
 778 
 779 /*
 780  * ISO C Standard:  7.17  Common definitions  <stddef.h>
 781  */
 782 
 783 
 784 
 785 
 786 
 787 
 788 /* Any one of these symbols __need_* means that GNU libc
 789    wants us just to define one data type.  So don't define
 790    the symbols that indicate this file's entire job has been done.  */
 791 # 46 "/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include/stddef.h" 3 4
 792 /* This avoids lossage on SunOS but only if stdtypes.h comes first.
 793    There's no way to win with the other order!  Sun lossage.  */
 794 # 86 "/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include/stddef.h" 3 4
 795 /* Sequent's header files use _PTRDIFF_T_ in some conflicting way.
 796    Just ignore it.  */
 797 
 798 
 799 
 800 
 801 /* On VxWorks, <type/vxTypesBase.h> may have defined macros like
 802    _TYPE_size_t which will typedef size_t.  fixincludes patched the
 803    vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
 804    not defined, and so that defining this macro defines _GCC_SIZE_T.
 805    If we find that the macros are still defined at this point, we must
 806    invoke them so that the type is defined as expected.  */
 807 # 111 "/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include/stddef.h" 3 4
 808 /* In case nobody has defined these types, but we aren't running under
 809    GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
 810    __WCHAR_TYPE__ have reasonable values.  This can happen if the
 811    parts of GCC is compiled by an older compiler, that actually
 812    include gstddef.h, such as collect2.  */
 813 
 814 /* Signed type of difference of two pointers.  */
 815 
 816 /* Define this type if we are doing the whole job,
 817    or if we want this type in particular.  */
 818 # 159 "/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include/stddef.h" 3 4
 819 /* Unsigned type of `sizeof' something.  */
 820 
 821 /* Define this type if we are doing the whole job,
 822    or if we want this type in particular.  */
 823 # 209 "/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include/stddef.h" 3 4
 824 typedef long unsigned int size_t;
 825 # 235 "/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include/stddef.h" 3 4
 826 /* Wide character type.
 827    Locale-writers should change this as necessary to
 828    be big enough to hold unique values not between 0 and 127,
 829    and not (wchar_t) -1, for each defined multibyte character.  */
 830 
 831 /* Define this type if we are doing the whole job,
 832    or if we want this type in particular.  */
 833 # 387 "/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include/stddef.h" 3 4
 834 /* A null pointer constant.  */
 835 # 34 "/usr/include/stdio.h" 2 3 4
 836 
 837 
 838 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include/stdarg.h" 1 3 4
 839 /* Copyright (C) 1989-2021 Free Software Foundation, Inc.
 840 
 841 This file is part of GCC.
 842 
 843 GCC is free software; you can redistribute it and/or modify
 844 it under the terms of the GNU General Public License as published by
 845 the Free Software Foundation; either version 3, or (at your option)
 846 any later version.
 847 
 848 GCC is distributed in the hope that it will be useful,
 849 but WITHOUT ANY WARRANTY; without even the implied warranty of
 850 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 851 GNU General Public License for more details.
 852 
 853 Under Section 7 of GPL version 3, you are granted additional
 854 permissions described in the GCC Runtime Library Exception, version
 855 3.1, as published by the Free Software Foundation.
 856 
 857 You should have received a copy of the GNU General Public License and
 858 a copy of the GCC Runtime Library Exception along with this program;
 859 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 860 <http://www.gnu.org/licenses/>.  */
 861 
 862 /*
 863  * ISO C Standard:  7.15  Variable arguments  <stdarg.h>
 864  */
 865 # 36 "/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include/stdarg.h" 3 4
 866 /* Define __gnuc_va_list.  */
 867 
 868 
 869 
 870 typedef __builtin_va_list __gnuc_va_list;
 871 
 872 
 873 /* Define the standard macros for the user,
 874    if this invocation was from the user program.  */
 875 # 37 "/usr/include/stdio.h" 2 3 4
 876 
 877 # 1 "/usr/include/bits/types.h" 1 3 4
 878 /* bits/types.h -- definitions of __*_t types underlying *_t types.
 879    Copyright (C) 2002-2021 Free Software Foundation, Inc.
 880    This file is part of the GNU C Library.
 881 
 882    The GNU C Library is free software; you can redistribute it and/or
 883    modify it under the terms of the GNU Lesser General Public
 884    License as published by the Free Software Foundation; either
 885    version 2.1 of the License, or (at your option) any later version.
 886 
 887    The GNU C Library is distributed in the hope that it will be useful,
 888    but WITHOUT ANY WARRANTY; without even the implied warranty of
 889    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 890    Lesser General Public License for more details.
 891 
 892    You should have received a copy of the GNU Lesser General Public
 893    License along with the GNU C Library; if not, see
 894    <https://www.gnu.org/licenses/>.  */
 895 
 896 /*
 897  * Never include this file directly; use <sys/types.h> instead.
 898  */
 899 
 900 
 901 
 902 
 903 # 1 "/usr/include/features.h" 1 3 4
 904 /* Copyright (C) 1991-2021 Free Software Foundation, Inc.
 905    This file is part of the GNU C Library.
 906 
 907    The GNU C Library is free software; you can redistribute it and/or
 908    modify it under the terms of the GNU Lesser General Public
 909    License as published by the Free Software Foundation; either
 910    version 2.1 of the License, or (at your option) any later version.
 911 
 912    The GNU C Library is distributed in the hope that it will be useful,
 913    but WITHOUT ANY WARRANTY; without even the implied warranty of
 914    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 915    Lesser General Public License for more details.
 916 
 917    You should have received a copy of the GNU Lesser General Public
 918    License along with the GNU C Library; if not, see
 919    <https://www.gnu.org/licenses/>.  */
 920 # 27 "/usr/include/bits/types.h" 2 3 4
 921 # 1 "/usr/include/bits/wordsize.h" 1 3 4
 922 /* Determine the wordsize from the preprocessor defines.  */
 923 # 13 "/usr/include/bits/wordsize.h" 3 4
 924 /* Both x86-64 and x32 use the 64-bit system call interface.  */
 925 # 28 "/usr/include/bits/types.h" 2 3 4
 926 # 1 "/usr/include/bits/timesize.h" 1 3 4
 927 /* Bit size of the time_t type at glibc build time, x86-64 and x32 case.
 928    Copyright (C) 2018-2021 Free Software Foundation, Inc.
 929    This file is part of the GNU C Library.
 930 
 931    The GNU C Library is free software; you can redistribute it and/or
 932    modify it under the terms of the GNU Lesser General Public
 933    License as published by the Free Software Foundation; either
 934    version 2.1 of the License, or (at your option) any later version.
 935 
 936    The GNU C Library is distributed in the hope that it will be useful,
 937    but WITHOUT ANY WARRANTY; without even the implied warranty of
 938    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 939    Lesser General Public License for more details.
 940 
 941    You should have received a copy of the GNU Lesser General Public
 942    License along with the GNU C Library; if not, see
 943    <https://www.gnu.org/licenses/>.  */
 944 
 945 
 946 
 947 
 948 
 949 /* For others, time size is word size.  */
 950 # 29 "/usr/include/bits/types.h" 2 3 4
 951 
 952 /* Convenience types.  */
 953 typedef unsigned char __u_char;
 954 typedef unsigned short int __u_short;
 955 typedef unsigned int __u_int;
 956 typedef unsigned long int __u_long;
 957 
 958 /* Fixed-size types, underlying types depend on word size and compiler.  */
 959 typedef signed char __int8_t;
 960 typedef unsigned char __uint8_t;
 961 typedef signed short int __int16_t;
 962 typedef unsigned short int __uint16_t;
 963 typedef signed int __int32_t;
 964 typedef unsigned int __uint32_t;
 965 
 966 typedef signed long int __int64_t;
 967 typedef unsigned long int __uint64_t;
 968 
 969 
 970 
 971 
 972 
 973 /* Smallest types with at least a given width.  */
 974 typedef __int8_t __int_least8_t;
 975 typedef __uint8_t __uint_least8_t;
 976 typedef __int16_t __int_least16_t;
 977 typedef __uint16_t __uint_least16_t;
 978 typedef __int32_t __int_least32_t;
 979 typedef __uint32_t __uint_least32_t;
 980 typedef __int64_t __int_least64_t;
 981 typedef __uint64_t __uint_least64_t;
 982 
 983 /* quad_t is also 64 bits.  */
 984 
 985 typedef long int __quad_t;
 986 typedef unsigned long int __u_quad_t;
 987 
 988 
 989 
 990 
 991 
 992 /* Largest integral types.  */
 993 
 994 typedef long int __intmax_t;
 995 typedef unsigned long int __uintmax_t;
 996 
 997 
 998 
 999 
1000 
1001 
1002 /* The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
1003    macros for each of the OS types we define below.  The definitions
1004    of those macros must use the following macros for underlying types.
1005    We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
1006    variants of each of the following integer types on this machine.
1007 
1008     16        -- "natural" 16-bit type (always short)
1009     32        -- "natural" 32-bit type (always int)
1010     64        -- "natural" 64-bit type (long or long long)
1011     LONG32        -- 32-bit type, traditionally long
1012     QUAD        -- 64-bit type, traditionally long long
1013     WORD        -- natural type of __WORDSIZE bits (int or long)
1014     LONGWORD    -- type of __WORDSIZE bits, traditionally long
1015 
1016    We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
1017    conventional uses of `long' or `long long' type modifiers match the
1018    types we define, even when a less-adorned type would be the same size.
1019    This matters for (somewhat) portably writing printf/scanf formats for
1020    these types, where using the appropriate l or ll format modifiers can
1021    make the typedefs and the formats match up across all GNU platforms.  If
1022    we used `long' when it's 64 bits where `long long' is expected, then the
1023    compiler would warn about the formats not matching the argument types,
1024    and the programmer changing them to shut up the compiler would break the
1025    program's portability.
1026 
1027    Here we assume what is presently the case in all the GCC configurations
1028    we support: long long is always 64 bits, long is always word/address size,
1029    and int is always 32 bits.  */
1030 # 136 "/usr/include/bits/types.h" 3 4
1031 /* No need to mark the typedef with __extension__.   */
1032 
1033 
1034 
1035 
1036 # 1 "/usr/include/bits/typesizes.h" 1 3 4
1037 /* bits/typesizes.h -- underlying types for *_t.  Linux/x86-64 version.
1038    Copyright (C) 2012-2021 Free Software Foundation, Inc.
1039    This file is part of the GNU C Library.
1040 
1041    The GNU C Library is free software; you can redistribute it and/or
1042    modify it under the terms of the GNU Lesser General Public
1043    License as published by the Free Software Foundation; either
1044    version 2.1 of the License, or (at your option) any later version.
1045 
1046    The GNU C Library is distributed in the hope that it will be useful,
1047    but WITHOUT ANY WARRANTY; without even the implied warranty of
1048    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1049    Lesser General Public License for more details.
1050 
1051    You should have received a copy of the GNU Lesser General Public
1052    License along with the GNU C Library; if not, see
1053    <https://www.gnu.org/licenses/>.  */
1054 # 26 "/usr/include/bits/typesizes.h" 3 4
1055 /* See <bits/types.h> for the meaning of these macros.  This file exists so
1056    that <bits/types.h> need not vary across different GNU platforms.  */
1057 
1058 /* X32 kernel interface is 64-bit.  */
1059 # 78 "/usr/include/bits/typesizes.h" 3 4
1060 /* Tell the libc code that off_t and off64_t are actually the same type
1061    for all ABI purposes, even if possibly expressed as different base types
1062    for C type-checking purposes.  */
1063 
1064 
1065 /* Same for ino_t and ino64_t.  */
1066 
1067 
1068 /* And for __rlim_t and __rlim64_t.  */
1069 
1070 
1071 /* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t.  */
1072 
1073 
1074 /* And for getitimer, setitimer and rusage  */
1075 # 102 "/usr/include/bits/typesizes.h" 3 4
1076 /* Number of descriptors that can fit in an `fd_set'.  */
1077 # 142 "/usr/include/bits/types.h" 2 3 4
1078 # 1 "/usr/include/bits/time64.h" 1 3 4
1079 /* bits/time64.h -- underlying types for __time64_t.  Generic version.
1080    Copyright (C) 2018-2021 Free Software Foundation, Inc.
1081    This file is part of the GNU C Library.
1082 
1083    The GNU C Library is free software; you can redistribute it and/or
1084    modify it under the terms of the GNU Lesser General Public
1085    License as published by the Free Software Foundation; either
1086    version 2.1 of the License, or (at your option) any later version.
1087 
1088    The GNU C Library is distributed in the hope that it will be useful,
1089    but WITHOUT ANY WARRANTY; without even the implied warranty of
1090    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1091    Lesser General Public License for more details.
1092 
1093    You should have received a copy of the GNU Lesser General Public
1094    License along with the GNU C Library; if not, see
1095    <https://www.gnu.org/licenses/>.  */
1096 # 26 "/usr/include/bits/time64.h" 3 4
1097 /* Define __TIME64_T_TYPE so that it is always a 64-bit type.  */
1098 
1099 
1100 /* If we already have 64-bit time type then use it.  */
1101 # 143 "/usr/include/bits/types.h" 2 3 4
1102 
1103 
1104 typedef unsigned long int __dev_t; /* Type of device numbers.  */
1105 typedef unsigned int __uid_t; /* Type of user identifications.  */
1106 typedef unsigned int __gid_t; /* Type of group identifications.  */
1107 typedef unsigned long int __ino_t; /* Type of file serial numbers.  */
1108 typedef unsigned long int __ino64_t; /* Type of file serial numbers (LFS).*/
1109 typedef unsigned int __mode_t; /* Type of file attribute bitmasks.  */
1110 typedef unsigned long int __nlink_t; /* Type of file link counts.  */
1111 typedef long int __off_t; /* Type of file sizes and offsets.  */
1112 typedef long int __off64_t; /* Type of file sizes and offsets (LFS).  */
1113 typedef int __pid_t; /* Type of process identifications.  */
1114 typedef struct { int __val[2]; } __fsid_t; /* Type of file system IDs.  */
1115 typedef long int __clock_t; /* Type of CPU usage counts.  */
1116 typedef unsigned long int __rlim_t; /* Type for resource measurement.  */
1117 typedef unsigned long int __rlim64_t; /* Type for resource measurement (LFS).  */
1118 typedef unsigned int __id_t; /* General type for IDs.  */
1119 typedef long int __time_t; /* Seconds since the Epoch.  */
1120 typedef unsigned int __useconds_t; /* Count of microseconds.  */
1121 typedef long int __suseconds_t; /* Signed count of microseconds.  */
1122 typedef long int __suseconds64_t;
1123 
1124 typedef int __daddr_t; /* The type of a disk address.  */
1125 typedef int __key_t; /* Type of an IPC key.  */
1126 
1127 /* Clock ID used in clock and timer functions.  */
1128 typedef int __clockid_t;
1129 
1130 /* Timer ID returned by `timer_create'.  */
1131 typedef void * __timer_t;
1132 
1133 /* Type to represent block size.  */
1134 typedef long int __blksize_t;
1135 
1136 /* Types from the Large File Support interface.  */
1137 
1138 /* Type to count number of disk blocks.  */
1139 typedef long int __blkcnt_t;
1140 typedef long int __blkcnt64_t;
1141 
1142 /* Type to count file system blocks.  */
1143 typedef unsigned long int __fsblkcnt_t;
1144 typedef unsigned long int __fsblkcnt64_t;
1145 
1146 /* Type to count file system nodes.  */
1147 typedef unsigned long int __fsfilcnt_t;
1148 typedef unsigned long int __fsfilcnt64_t;
1149 
1150 /* Type of miscellaneous file system fields.  */
1151 typedef long int __fsword_t;
1152 
1153 typedef long int __ssize_t; /* Type of a byte count, or error.  */
1154 
1155 /* Signed long type used in system calls.  */
1156 typedef long int __syscall_slong_t;
1157 /* Unsigned long type used in system calls.  */
1158 typedef unsigned long int __syscall_ulong_t;
1159 
1160 /* These few don't really vary by system, they always correspond
1161    to one of the other defined types.  */
1162 typedef __off64_t __loff_t; /* Type of file sizes and offsets (LFS).  */
1163 typedef char *__caddr_t;
1164 
1165 /* Duplicates info from stdint.h but this is used in unistd.h.  */
1166 typedef long int __intptr_t;
1167 
1168 /* Duplicate info from sys/socket.h.  */
1169 typedef unsigned int __socklen_t;
1170 
1171 /* C99: An integer type that can be accessed as an atomic entity,
1172    even in the presence of asynchronous interrupts.
1173    It is not currently necessary for this to be machine-specific.  */
1174 typedef int __sig_atomic_t;
1175 
1176 /* Seconds since the Epoch, visible to user code when time_t is too
1177    narrow only for consistency with the old way of widening too-narrow
1178    types.  User code should never use __time64_t.  */
1179 # 39 "/usr/include/stdio.h" 2 3 4
1180 # 1 "/usr/include/bits/types/__fpos_t.h" 1 3 4
1181 
1182 
1183 
1184 # 1 "/usr/include/bits/types.h" 1 3 4
1185 /* bits/types.h -- definitions of __*_t types underlying *_t types.
1186    Copyright (C) 2002-2021 Free Software Foundation, Inc.
1187    This file is part of the GNU C Library.
1188 
1189    The GNU C Library is free software; you can redistribute it and/or
1190    modify it under the terms of the GNU Lesser General Public
1191    License as published by the Free Software Foundation; either
1192    version 2.1 of the License, or (at your option) any later version.
1193 
1194    The GNU C Library is distributed in the hope that it will be useful,
1195    but WITHOUT ANY WARRANTY; without even the implied warranty of
1196    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1197    Lesser General Public License for more details.
1198 
1199    You should have received a copy of the GNU Lesser General Public
1200    License along with the GNU C Library; if not, see
1201    <https://www.gnu.org/licenses/>.  */
1202 
1203 /*
1204  * Never include this file directly; use <sys/types.h> instead.
1205  */
1206 # 5 "/usr/include/bits/types/__fpos_t.h" 2 3 4
1207 # 1 "/usr/include/bits/types/__mbstate_t.h" 1 3 4
1208 
1209 
1210 
1211 /* Integral type unchanged by default argument promotions that can
1212    hold any value corresponding to members of the extended character
1213    set, as well as at least one value that does not correspond to any
1214    member of the extended character set.  */
1215 
1216 
1217 
1218 
1219 /* Conversion state information.  */
1220 typedef struct
1221 {
1222   int __count;
1223   union
1224   {
1225     unsigned int __wch;
1226     char __wchb[4];
1227   } __value; /* Value so far.  */
1228 } __mbstate_t;
1229 # 6 "/usr/include/bits/types/__fpos_t.h" 2 3 4
1230 
1231 /* The tag name of this struct is _G_fpos_t to preserve historic
1232    C++ mangled names for functions taking fpos_t arguments.
1233    That name should not be used in new code.  */
1234 typedef struct _G_fpos_t
1235 {
1236   __off_t __pos;
1237   __mbstate_t __state;
1238 } __fpos_t;
1239 # 40 "/usr/include/stdio.h" 2 3 4
1240 # 1 "/usr/include/bits/types/__fpos64_t.h" 1 3 4
1241 
1242 
1243 
1244 # 1 "/usr/include/bits/types.h" 1 3 4
1245 /* bits/types.h -- definitions of __*_t types underlying *_t types.
1246    Copyright (C) 2002-2021 Free Software Foundation, Inc.
1247    This file is part of the GNU C Library.
1248 
1249    The GNU C Library is free software; you can redistribute it and/or
1250    modify it under the terms of the GNU Lesser General Public
1251    License as published by the Free Software Foundation; either
1252    version 2.1 of the License, or (at your option) any later version.
1253 
1254    The GNU C Library is distributed in the hope that it will be useful,
1255    but WITHOUT ANY WARRANTY; without even the implied warranty of
1256    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1257    Lesser General Public License for more details.
1258 
1259    You should have received a copy of the GNU Lesser General Public
1260    License along with the GNU C Library; if not, see
1261    <https://www.gnu.org/licenses/>.  */
1262 
1263 /*
1264  * Never include this file directly; use <sys/types.h> instead.
1265  */
1266 # 5 "/usr/include/bits/types/__fpos64_t.h" 2 3 4
1267 
1268 
1269 /* The tag name of this struct is _G_fpos64_t to preserve historic
1270    C++ mangled names for functions taking fpos_t and/or fpos64_t
1271    arguments.  That name should not be used in new code.  */
1272 typedef struct _G_fpos64_t
1273 {
1274   __off64_t __pos;
1275   __mbstate_t __state;
1276 } __fpos64_t;
1277 # 41 "/usr/include/stdio.h" 2 3 4
1278 # 1 "/usr/include/bits/types/__FILE.h" 1 3 4
1279 
1280 
1281 
1282 struct _IO_FILE;
1283 typedef struct _IO_FILE __FILE;
1284 # 42 "/usr/include/stdio.h" 2 3 4
1285 # 1 "/usr/include/bits/types/FILE.h" 1 3 4
1286 
1287 
1288 
1289 struct _IO_FILE;
1290 
1291 /* The opaque type of streams.  This is the definition used elsewhere.  */
1292 typedef struct _IO_FILE FILE;
1293 # 43 "/usr/include/stdio.h" 2 3 4
1294 # 1 "/usr/include/bits/types/struct_FILE.h" 1 3 4
1295 /* Copyright (C) 1991-2021 Free Software Foundation, Inc.
1296    This file is part of the GNU C Library.
1297 
1298    The GNU C Library is free software; you can redistribute it and/or
1299    modify it under the terms of the GNU Lesser General Public
1300    License as published by the Free Software Foundation; either
1301    version 2.1 of the License, or (at your option) any later version.
1302 
1303    The GNU C Library is distributed in the hope that it will be useful,
1304    but WITHOUT ANY WARRANTY; without even the implied warranty of
1305    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1306    Lesser General Public License for more details.
1307 
1308    You should have received a copy of the GNU Lesser General Public
1309    License along with the GNU C Library; if not, see
1310    <https://www.gnu.org/licenses/>.  */
1311 
1312 
1313 
1314 
1315 /* Caution: The contents of this file are not part of the official
1316    stdio.h API.  However, much of it is part of the official *binary*
1317    interface, and therefore cannot be changed.  */
1318 # 33 "/usr/include/bits/types/struct_FILE.h" 3 4
1319 # 1 "/usr/include/bits/types.h" 1 3 4
1320 /* bits/types.h -- definitions of __*_t types underlying *_t types.
1321    Copyright (C) 2002-2021 Free Software Foundation, Inc.
1322    This file is part of the GNU C Library.
1323 
1324    The GNU C Library is free software; you can redistribute it and/or
1325    modify it under the terms of the GNU Lesser General Public
1326    License as published by the Free Software Foundation; either
1327    version 2.1 of the License, or (at your option) any later version.
1328 
1329    The GNU C Library is distributed in the hope that it will be useful,
1330    but WITHOUT ANY WARRANTY; without even the implied warranty of
1331    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1332    Lesser General Public License for more details.
1333 
1334    You should have received a copy of the GNU Lesser General Public
1335    License along with the GNU C Library; if not, see
1336    <https://www.gnu.org/licenses/>.  */
1337 
1338 /*
1339  * Never include this file directly; use <sys/types.h> instead.
1340  */
1341 # 34 "/usr/include/bits/types/struct_FILE.h" 2 3 4
1342 
1343 struct _IO_FILE;
1344 struct _IO_marker;
1345 struct _IO_codecvt;
1346 struct _IO_wide_data;
1347 
1348 /* During the build of glibc itself, _IO_lock_t will already have been
1349    defined by internal headers.  */
1350 
1351 typedef void _IO_lock_t;
1352 
1353 
1354 /* The tag name of this struct is _IO_FILE to preserve historic
1355    C++ mangled names for functions taking FILE* arguments.
1356    That name should not be used in new code.  */
1357 struct _IO_FILE
1358 {
1359   int _flags; /* High-order word is _IO_MAGIC; rest is flags. */
1360 
1361   /* The following pointers correspond to the C++ streambuf protocol. */
1362   char *_IO_read_ptr; /* Current read pointer */
1363   char *_IO_read_end; /* End of get area. */
1364   char *_IO_read_base; /* Start of putback+get area. */
1365   char *_IO_write_base; /* Start of put area. */
1366   char *_IO_write_ptr; /* Current put pointer. */
1367   char *_IO_write_end; /* End of put area. */
1368   char *_IO_buf_base; /* Start of reserve area. */
1369   char *_IO_buf_end; /* End of reserve area. */
1370 
1371   /* The following fields are used to support backing up and undo. */
1372   char *_IO_save_base; /* Pointer to start of non-current get area. */
1373   char *_IO_backup_base; /* Pointer to first valid character of backup area */
1374   char *_IO_save_end; /* Pointer to end of non-current get area. */
1375 
1376   struct _IO_marker *_markers;
1377 
1378   struct _IO_FILE *_chain;
1379 
1380   int _fileno;
1381   int _flags2;
1382   __off_t _old_offset; /* This used to be _offset but it's too small.  */
1383 
1384   /* 1+column number of pbase(); 0 is unknown. */
1385   unsigned short _cur_column;
1386   signed char _vtable_offset;
1387   char _shortbuf[1];
1388 
1389   _IO_lock_t *_lock;
1390 
1391 
1392 
1393 
1394 
1395 
1396 
1397   __off64_t _offset;
1398   /* Wide character stream stuff.  */
1399   struct _IO_codecvt *_codecvt;
1400   struct _IO_wide_data *_wide_data;
1401   struct _IO_FILE *_freeres_list;
1402   void *_freeres_buf;
1403   size_t __pad5;
1404   int _mode;
1405   /* Make sure we don't get into trouble again.  */
1406   char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
1407 };
1408 
1409 /* These macros are used by bits/stdio.h and internal headers.  */
1410 # 118 "/usr/include/bits/types/struct_FILE.h" 3 4
1411 /* Many more flag bits are defined internally.  */
1412 # 44 "/usr/include/stdio.h" 2 3 4
1413 # 52 "/usr/include/stdio.h" 3 4
1414 typedef __gnuc_va_list va_list;
1415 # 63 "/usr/include/stdio.h" 3 4
1416 typedef __off_t off_t;
1417 # 77 "/usr/include/stdio.h" 3 4
1418 typedef __ssize_t ssize_t;
1419 
1420 
1421 
1422 
1423 /* The type of the second argument to `fgetpos' and `fsetpos'.  */
1424 
1425 typedef __fpos_t fpos_t;
1426 
1427 
1428 
1429 
1430 
1431 
1432 
1433 /* The possibilities for the third argument to `setvbuf'.  */
1434 
1435 
1436 
1437 
1438 
1439 /* Default buffer size.  */
1440 
1441 
1442 
1443 /* The value returned by fgetc and similar functions to indicate the
1444    end of the file.  */
1445 
1446 
1447 
1448 /* The possibilities for the third argument to `fseek'.
1449    These values should not be changed.  */
1450 # 119 "/usr/include/stdio.h" 3 4
1451 /* Default path prefix for `tempnam' and `tmpnam'.  */
1452 
1453 
1454 
1455 
1456 /* Get the values:
1457    L_tmpnam    How long an array of chars must be to be passed to `tmpnam'.
1458    TMP_MAX    The minimum number of unique filenames generated by tmpnam
1459         (and tempnam when it uses tmpnam's name space),
1460         or tempnam (the two are separate).
1461    L_ctermid    How long an array to pass to `ctermid'.
1462    L_cuserid    How long an array to pass to `cuserid'.
1463    FOPEN_MAX    Minimum number of files that can be open at once.
1464    FILENAME_MAX    Maximum length of a filename.  */
1465 # 1 "/usr/include/bits/stdio_lim.h" 1 3 4
1466 /* Copyright (C) 1994-2021 Free Software Foundation, Inc.
1467    This file is part of the GNU C Library.
1468 
1469    The GNU C Library is free software; you can redistribute it and/or
1470    modify it under the terms of the GNU Lesser General Public
1471    License as published by the Free Software Foundation; either
1472    version 2.1 of the License, or (at your option) any later version.
1473 
1474    The GNU C Library is distributed in the hope that it will be useful,
1475    but WITHOUT ANY WARRANTY; without even the implied warranty of
1476    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1477    Lesser General Public License for more details.
1478 
1479    You should have received a copy of the GNU Lesser General Public
1480    License along with the GNU C Library; if not, see
1481    <https://www.gnu.org/licenses/>.  */
1482 # 134 "/usr/include/stdio.h" 2 3 4
1483 
1484 
1485 /* Standard streams.  */
1486 extern FILE *stdin; /* Standard input stream.  */
1487 extern FILE *stdout; /* Standard output stream.  */
1488 extern FILE *stderr; /* Standard error output stream.  */
1489 /* C89/C99 say they're macros.  Make them happy.  */
1490 
1491 
1492 
1493 
1494 /* Remove file FILENAME.  */
1495 extern int remove (const char *__filename) __attribute__ ((__nothrow__ , __leaf__));
1496 /* Rename file OLD to NEW.  */
1497 extern int rename (const char *__old, const char *__new) __attribute__ ((__nothrow__ , __leaf__));
1498 
1499 
1500 /* Rename file OLD relative to OLDFD to NEW relative to NEWFD.  */
1501 extern int renameat (int __oldfd, const char *__old, int __newfd,
1502        const char *__new) __attribute__ ((__nothrow__ , __leaf__));
1503 # 168 "/usr/include/stdio.h" 3 4
1504 /* Create a temporary file and open it read/write.
1505 
1506    This function is a possible cancellation point and therefore not
1507    marked with __THROW.  */
1508 
1509 extern FILE *tmpfile (void) ;
1510 # 186 "/usr/include/stdio.h" 3 4
1511 /* Generate a temporary filename.  */
1512 extern char *tmpnam (char *__s) __attribute__ ((__nothrow__ , __leaf__)) ;
1513 
1514 
1515 /* This is the reentrant variant of `tmpnam'.  The only difference is
1516    that it does not allow S to be NULL.  */
1517 extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__ , __leaf__)) ;
1518 
1519 
1520 
1521 
1522 /* Generate a unique temporary filename using up to five characters of PFX
1523    if it is not NULL.  The directory to put this file in is searched for
1524    as follows: First the environment variable "TMPDIR" is checked.
1525    If it contains the name of a writable directory, that directory is used.
1526    If not and if DIR is not NULL, that value is checked.  If that fails,
1527    P_tmpdir is tried and finally "/tmp".  The storage for the filename
1528    is allocated by `malloc'.  */
1529 extern char *tempnam (const char *__dir, const char *__pfx)
1530      __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) ;
1531 
1532 
1533 
1534 /* Close STREAM.
1535 
1536    This function is a possible cancellation point and therefore not
1537    marked with __THROW.  */
1538 extern int fclose (FILE *__stream);
1539 /* Flush STREAM, or all streams if STREAM is NULL.
1540 
1541    This function is a possible cancellation point and therefore not
1542    marked with __THROW.  */
1543 extern int fflush (FILE *__stream);
1544 
1545 
1546 /* Faster versions when locking is not required.
1547 
1548    This function is not part of POSIX and therefore no official
1549    cancellation point.  But due to similarity with an POSIX interface
1550    or due to the implementation it is a cancellation point and
1551    therefore not marked with __THROW.  */
1552 extern int fflush_unlocked (FILE *__stream);
1553 # 242 "/usr/include/stdio.h" 3 4
1554 /* Open a file and create a new stream for it.
1555 
1556    This function is a possible cancellation point and therefore not
1557    marked with __THROW.  */
1558 extern FILE *fopen (const char *__restrict __filename,
1559       const char *__restrict __modes) ;
1560 /* Open a file, replacing an existing stream with it.
1561 
1562    This function is a possible cancellation point and therefore not
1563    marked with __THROW.  */
1564 extern FILE *freopen (const char *__restrict __filename,
1565         const char *__restrict __modes,
1566         FILE *__restrict __stream) ;
1567 # 278 "/usr/include/stdio.h" 3 4
1568 /* Create a new stream that refers to an existing system file descriptor.  */
1569 extern FILE *fdopen (int __fd, const char *__modes) __attribute__ ((__nothrow__ , __leaf__)) ;
1570 # 291 "/usr/include/stdio.h" 3 4
1571 /* Create a new stream that refers to a memory buffer.  */
1572 extern FILE *fmemopen (void *__s, size_t __len, const char *__modes)
1573   __attribute__ ((__nothrow__ , __leaf__)) ;
1574 
1575 /* Open a stream that writes into a malloc'd buffer that is expanded as
1576    necessary.  *BUFLOC and *SIZELOC are updated with the buffer's location
1577    and the number of characters written on fflush or fclose.  */
1578 extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__ , __leaf__)) ;
1579 
1580 
1581 
1582 /* If BUF is NULL, make STREAM unbuffered.
1583    Else make it use buffer BUF, of size BUFSIZ.  */
1584 extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__));
1585 /* Make STREAM use buffering mode MODE.
1586    If BUF is not NULL, use N bytes of it for buffering;
1587    else allocate an internal buffer N bytes long.  */
1588 extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
1589       int __modes, size_t __n) __attribute__ ((__nothrow__ , __leaf__));
1590 
1591 
1592 /* If BUF is NULL, make STREAM unbuffered.
1593    Else make it use SIZE bytes of BUF for buffering.  */
1594 extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
1595          size_t __size) __attribute__ ((__nothrow__ , __leaf__));
1596 
1597 /* Make STREAM line-buffered.  */
1598 extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
1599 
1600 
1601 
1602 /* Write formatted output to STREAM.
1603 
1604    This function is a possible cancellation point and therefore not
1605    marked with __THROW.  */
1606 extern int fprintf (FILE *__restrict __stream,
1607       const char *__restrict __format, ...);
1608 /* Write formatted output to stdout.
1609 
1610    This function is a possible cancellation point and therefore not
1611    marked with __THROW.  */
1612 extern int printf (const char *__restrict __format, ...);
1613 /* Write formatted output to S.  */
1614 extern int sprintf (char *__restrict __s,
1615       const char *__restrict __format, ...) __attribute__ ((__nothrow__));
1616 
1617 /* Write formatted output to S from argument list ARG.
1618 
1619    This function is a possible cancellation point and therefore not
1620    marked with __THROW.  */
1621 extern int vfprintf (FILE *__restrict __s, const char *__restrict __format,
1622        __gnuc_va_list __arg);
1623 /* Write formatted output to stdout from argument list ARG.
1624 
1625    This function is a possible cancellation point and therefore not
1626    marked with __THROW.  */
1627 extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg);
1628 /* Write formatted output to S from argument list ARG.  */
1629 extern int vsprintf (char *__restrict __s, const char *__restrict __format,
1630        __gnuc_va_list __arg) __attribute__ ((__nothrow__));
1631 
1632 
1633 /* Maximum chars of output to write in MAXLEN.  */
1634 extern int snprintf (char *__restrict __s, size_t __maxlen,
1635        const char *__restrict __format, ...)
1636      __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
1637 
1638 extern int vsnprintf (char *__restrict __s, size_t __maxlen,
1639         const char *__restrict __format, __gnuc_va_list __arg)
1640      __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
1641 # 378 "/usr/include/stdio.h" 3 4
1642 /* Write formatted output to a file descriptor.  */
1643 extern int vdprintf (int __fd, const char *__restrict __fmt,
1644        __gnuc_va_list __arg)
1645      __attribute__ ((__format__ (__printf__, 2, 0)));
1646 extern int dprintf (int __fd, const char *__restrict __fmt, ...)
1647      __attribute__ ((__format__ (__printf__, 2, 3)));
1648 
1649 
1650 
1651 /* Read formatted input from STREAM.
1652 
1653    This function is a possible cancellation point and therefore not
1654    marked with __THROW.  */
1655 extern int fscanf (FILE *__restrict __stream,
1656      const char *__restrict __format, ...) ;
1657 /* Read formatted input from stdin.
1658 
1659    This function is a possible cancellation point and therefore not
1660    marked with __THROW.  */
1661 extern int scanf (const char *__restrict __format, ...) ;
1662 /* Read formatted input from S.  */
1663 extern int sscanf (const char *__restrict __s,
1664      const char *__restrict __format, ...) __attribute__ ((__nothrow__ , __leaf__));
1665 
1666 /* For historical reasons, the C99-compliant versions of the scanf
1667    functions are at alternative names.  When __LDBL_COMPAT or
1668    __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI are in effect, this is handled in
1669    bits/stdio-ldbl.h.  */
1670 # 1 "/usr/include/bits/floatn.h" 1 3 4
1671 /* Macros to control TS 18661-3 glibc features on x86.
1672    Copyright (C) 2017-2021 Free Software Foundation, Inc.
1673    This file is part of the GNU C Library.
1674 
1675    The GNU C Library is free software; you can redistribute it and/or
1676    modify it under the terms of the GNU Lesser General Public
1677    License as published by the Free Software Foundation; either
1678    version 2.1 of the License, or (at your option) any later version.
1679 
1680    The GNU C Library is distributed in the hope that it will be useful,
1681    but WITHOUT ANY WARRANTY; without even the implied warranty of
1682    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1683    Lesser General Public License for more details.
1684 
1685    You should have received a copy of the GNU Lesser General Public
1686    License along with the GNU C Library; if not, see
1687    <https://www.gnu.org/licenses/>.  */
1688 
1689 
1690 
1691 
1692 # 1 "/usr/include/features.h" 1 3 4
1693 /* Copyright (C) 1991-2021 Free Software Foundation, Inc.
1694    This file is part of the GNU C Library.
1695 
1696    The GNU C Library is free software; you can redistribute it and/or
1697    modify it under the terms of the GNU Lesser General Public
1698    License as published by the Free Software Foundation; either
1699    version 2.1 of the License, or (at your option) any later version.
1700 
1701    The GNU C Library is distributed in the hope that it will be useful,
1702    but WITHOUT ANY WARRANTY; without even the implied warranty of
1703    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1704    Lesser General Public License for more details.
1705 
1706    You should have received a copy of the GNU Lesser General Public
1707    License along with the GNU C Library; if not, see
1708    <https://www.gnu.org/licenses/>.  */
1709 # 23 "/usr/include/bits/floatn.h" 2 3 4
1710 
1711 /* Defined to 1 if the current compiler invocation provides a
1712    floating-point type with the IEEE 754 binary128 format, and this
1713    glibc includes corresponding *f128 interfaces for it.  The required
1714    libgcc support was added some time after the basic compiler
1715    support, for x86_64 and x86.  */
1716 # 37 "/usr/include/bits/floatn.h" 3 4
1717 /* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
1718    from the default float, double and long double types in this glibc.  */
1719 
1720 
1721 
1722 
1723 
1724 
1725 /* Defined to 1 if the current compiler invocation provides a
1726    floating-point type with the right format for _Float64x, and this
1727    glibc includes corresponding *f64x interfaces for it.  */
1728 
1729 
1730 /* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
1731    of long double.  Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
1732    the format of _Float128, which must be different from that of long
1733    double.  */
1734 
1735 
1736 
1737 
1738 /* Defined to concatenate the literal suffix to be used with _Float128
1739    types, if __HAVE_FLOAT128 is 1. */
1740 # 69 "/usr/include/bits/floatn.h" 3 4
1741 /* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1.  */
1742 # 81 "/usr/include/bits/floatn.h" 3 4
1743 /* The remaining of this file provides support for older compilers.  */
1744 
1745 
1746 /* The type _Float128 exists only since GCC 7.0.  */
1747 
1748 
1749 
1750 
1751 /* __builtin_huge_valf128 doesn't exist before GCC 7.0.  */
1752 
1753 
1754 
1755 
1756 /* Older GCC has only a subset of built-in functions for _Float128 on
1757    x86, and __builtin_infq is not usable in static initializers.
1758    Converting a narrower sNaN to _Float128 produces a quiet NaN, so
1759    attempts to use _Float128 sNaNs will not work properly with older
1760    compilers.  */
1761 # 107 "/usr/include/bits/floatn.h" 3 4
1762 /* In math/math.h, __MATH_TG will expand signbit to __builtin_signbit*,
1763    e.g.: __builtin_signbitf128, before GCC 6.  However, there has never
1764    been a __builtin_signbitf128 in GCC and the type-generic builtin is
1765    only available since GCC 6.  */
1766 # 119 "/usr/include/bits/floatn.h" 3 4
1767 # 1 "/usr/include/bits/floatn-common.h" 1 3 4
1768 /* Macros to control TS 18661-3 glibc features where the same
1769    definitions are appropriate for all platforms.
1770    Copyright (C) 2017-2021 Free Software Foundation, Inc.
1771    This file is part of the GNU C Library.
1772 
1773    The GNU C Library is free software; you can redistribute it and/or
1774    modify it under the terms of the GNU Lesser General Public
1775    License as published by the Free Software Foundation; either
1776    version 2.1 of the License, or (at your option) any later version.
1777 
1778    The GNU C Library is distributed in the hope that it will be useful,
1779    but WITHOUT ANY WARRANTY; without even the implied warranty of
1780    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1781    Lesser General Public License for more details.
1782 
1783    You should have received a copy of the GNU Lesser General Public
1784    License along with the GNU C Library; if not, see
1785    <https://www.gnu.org/licenses/>.  */
1786 
1787 
1788 
1789 
1790 # 1 "/usr/include/features.h" 1 3 4
1791 /* Copyright (C) 1991-2021 Free Software Foundation, Inc.
1792    This file is part of the GNU C Library.
1793 
1794    The GNU C Library is free software; you can redistribute it and/or
1795    modify it under the terms of the GNU Lesser General Public
1796    License as published by the Free Software Foundation; either
1797    version 2.1 of the License, or (at your option) any later version.
1798 
1799    The GNU C Library is distributed in the hope that it will be useful,
1800    but WITHOUT ANY WARRANTY; without even the implied warranty of
1801    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1802    Lesser General Public License for more details.
1803 
1804    You should have received a copy of the GNU Lesser General Public
1805    License along with the GNU C Library; if not, see
1806    <https://www.gnu.org/licenses/>.  */
1807 # 24 "/usr/include/bits/floatn-common.h" 2 3 4
1808 # 1 "/usr/include/bits/long-double.h" 1 3 4
1809 /* Properties of long double type.  ldbl-96 version.
1810    Copyright (C) 2016-2021 Free Software Foundation, Inc.
1811    This file is part of the GNU C Library.
1812 
1813    The GNU C Library is free software; you can redistribute it and/or
1814    modify it under the terms of the GNU Lesser General Public
1815    License  published by the Free Software Foundation; either
1816    version 2.1 of the License, or (at your option) any later version.
1817 
1818    The GNU C Library is distributed in the hope that it will be useful,
1819    but WITHOUT ANY WARRANTY; without even the implied warranty of
1820    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1821    Lesser General Public License for more details.
1822 
1823    You should have received a copy of the GNU Lesser General Public
1824    License along with the GNU C Library; if not, see
1825    <https://www.gnu.org/licenses/>.  */
1826 
1827 /* long double is distinct from double, so there is nothing to
1828    define here.  */
1829 # 25 "/usr/include/bits/floatn-common.h" 2 3 4
1830 
1831 /* This header should be included at the bottom of each bits/floatn.h.
1832    It defines the following macros for each _FloatN and _FloatNx type,
1833    where the same definitions, or definitions based only on the macros
1834    in bits/floatn.h, are appropriate for all glibc configurations.  */
1835 
1836 /* Defined to 1 if the current compiler invocation provides a
1837    floating-point type with the right format for this type, and this
1838    glibc includes corresponding *fN or *fNx interfaces for it.  */
1839 
1840 
1841 
1842 
1843 
1844 
1845 /* Defined to 1 if the corresponding __HAVE_<type> macro is 1 and the
1846    type is the first with its format in the sequence of (the default
1847    choices for) float, double, long double, _Float16, _Float32,
1848    _Float64, _Float128, _Float32x, _Float64x, _Float128x for this
1849    glibc; that is, if functions present once per floating-point format
1850    rather than once per type are present for this type.
1851 
1852    All configurations supported by glibc have _Float32 the same format
1853    as float, _Float64 and _Float32x the same format as double, the
1854    _Float64x the same format as either long double or _Float128.  No
1855    configurations support _Float128x or, as of GCC 7, have compiler
1856    support for a type meeting the requirements for _Float128x.  */
1857 
1858 
1859 
1860 
1861 
1862 
1863 
1864 /* Defined to 1 if the corresponding _FloatN type is not binary compatible
1865    with the corresponding ISO C type in the current compilation unit as
1866    opposed to __HAVE_DISTINCT_FLOATN, which indicates the default types built
1867    in glibc.  */
1868 
1869 
1870 
1871 /* Defined to 1 if any _FloatN or _FloatNx types that are not
1872    ABI-distinct are however distinct types at the C language level (so
1873    for the purposes of __builtin_types_compatible_p and _Generic).  */
1874 # 77 "/usr/include/bits/floatn-common.h" 3 4
1875 /* Defined to concatenate the literal suffix to be used with _FloatN
1876    or _FloatNx types, if __HAVE_<type> is 1.  The corresponding
1877    literal suffixes exist since GCC 7, for C only.  */
1878 # 137 "/usr/include/bits/floatn-common.h" 3 4
1879 /* Defined to a complex type if __HAVE_<type> is 1.  */
1880 # 195 "/usr/include/bits/floatn-common.h" 3 4
1881 /* The remaining of this file provides support for older compilers.  */
1882 # 228 "/usr/include/bits/floatn-common.h" 3 4
1883 /* If double, long double and _Float64 all have the same set of
1884    values, TS 18661-3 requires the usual arithmetic conversions on
1885    long double and _Float64 to produce _Float64.  For this to be the
1886    case when building with a compiler without a distinct _Float64
1887    type, _Float64 must be a typedef for long double, not for
1888    double.  */
1889 # 120 "/usr/include/bits/floatn.h" 2 3 4
1890 # 407 "/usr/include/stdio.h" 2 3 4
1891 
1892 
1893 
1894 extern int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...) __asm__ ("" "__isoc99_fscanf")
1895 
1896                                ;
1897 extern int scanf (const char *__restrict __format, ...) __asm__ ("" "__isoc99_scanf")
1898                               ;
1899 extern int sscanf (const char *__restrict __s, const char *__restrict __format, ...) __asm__ ("" "__isoc99_sscanf") __attribute__ ((__nothrow__ , __leaf__))
1900 
1901                       ;
1902 # 431 "/usr/include/stdio.h" 3 4
1903 /* Read formatted input from S into argument list ARG.
1904 
1905    This function is a possible cancellation point and therefore not
1906    marked with __THROW.  */
1907 extern int vfscanf (FILE *__restrict __s, const char *__restrict __format,
1908       __gnuc_va_list __arg)
1909      __attribute__ ((__format__ (__scanf__, 2, 0))) ;
1910 
1911 /* Read formatted input from stdin into argument list ARG.
1912 
1913    This function is a possible cancellation point and therefore not
1914    marked with __THROW.  */
1915 extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg)
1916      __attribute__ ((__format__ (__scanf__, 1, 0))) ;
1917 
1918 /* Read formatted input from S into argument list ARG.  */
1919 extern int vsscanf (const char *__restrict __s,
1920       const char *__restrict __format, __gnuc_va_list __arg)
1921      __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
1922 
1923 /* Same redirection as above for the v*scanf family.  */
1924 
1925 
1926 
1927 extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfscanf")
1928 
1929 
1930 
1931      __attribute__ ((__format__ (__scanf__, 2, 0))) ;
1932 extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vscanf")
1933 
1934      __attribute__ ((__format__ (__scanf__, 1, 0))) ;
1935 extern int vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vsscanf") __attribute__ ((__nothrow__ , __leaf__))
1936 
1937 
1938 
1939      __attribute__ ((__format__ (__scanf__, 2, 0)));
1940 # 485 "/usr/include/stdio.h" 3 4
1941 /* Read a character from STREAM.
1942 
1943    These functions are possible cancellation points and therefore not
1944    marked with __THROW.  */
1945 extern int fgetc (FILE *__stream);
1946 extern int getc (FILE *__stream);
1947 
1948 /* Read a character from stdin.
1949 
1950    This function is a possible cancellation point and therefore not
1951    marked with __THROW.  */
1952 extern int getchar (void);
1953 
1954 
1955 /* These are defined in POSIX.1:1996.
1956 
1957    These functions are possible cancellation points and therefore not
1958    marked with __THROW.  */
1959 extern int getc_unlocked (FILE *__stream);
1960 extern int getchar_unlocked (void);
1961 
1962 
1963 
1964 /* Faster version when locking is not necessary.
1965 
1966    This function is not part of POSIX and therefore no official
1967    cancellation point.  But due to similarity with an POSIX interface
1968    or due to the implementation it is a cancellation point and
1969    therefore not marked with __THROW.  */
1970 extern int fgetc_unlocked (FILE *__stream);
1971 
1972 
1973 
1974 /* Write a character to STREAM.
1975 
1976    These functions are possible cancellation points and therefore not
1977    marked with __THROW.
1978 
1979    These functions is a possible cancellation point and therefore not
1980    marked with __THROW.  */
1981 extern int fputc (int __c, FILE *__stream);
1982 extern int putc (int __c, FILE *__stream);
1983 
1984 /* Write a character to stdout.
1985 
1986    This function is a possible cancellation point and therefore not
1987    marked with __THROW.  */
1988 extern int putchar (int __c);
1989 
1990 
1991 /* Faster version when locking is not necessary.
1992 
1993    This function is not part of POSIX and therefore no official
1994    cancellation point.  But due to similarity with an POSIX interface
1995    or due to the implementation it is a cancellation point and
1996    therefore not marked with __THROW.  */
1997 extern int fputc_unlocked (int __c, FILE *__stream);
1998 
1999 
2000 
2001 /* These are defined in POSIX.1:1996.
2002 
2003    These functions are possible cancellation points and therefore not
2004    marked with __THROW.  */
2005 extern int putc_unlocked (int __c, FILE *__stream);
2006 extern int putchar_unlocked (int __c);
2007 
2008 
2009 
2010 
2011 
2012 /* Get a word (int) from STREAM.  */
2013 extern int getw (FILE *__stream);
2014 
2015 /* Write a word (int) to STREAM.  */
2016 extern int putw (int __w, FILE *__stream);
2017 
2018 
2019 
2020 /* Get a newline-terminated string of finite length from STREAM.
2021 
2022    This function is a possible cancellation point and therefore not
2023    marked with __THROW.  */
2024 extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
2025      __attribute__ ((__access__ (__write_only__, 1, 2)));
2026 # 598 "/usr/include/stdio.h" 3 4
2027 /* Read up to (and including) a DELIMITER from STREAM into *LINEPTR
2028    (and null-terminate it). *LINEPTR is a pointer returned from malloc (or
2029    NULL), pointing to *N characters of space.  It is realloc'd as
2030    necessary.  Returns the number of characters read (not including the
2031    null terminator), or -1 on error or EOF.
2032 
2033    These functions are not part of POSIX and therefore no official
2034    cancellation point.  But due to similarity with an POSIX interface
2035    or due to the implementation they are cancellation points and
2036    therefore not marked with __THROW.  */
2037 extern __ssize_t __getdelim (char **__restrict __lineptr,
2038                              size_t *__restrict __n, int __delimiter,
2039                              FILE *__restrict __stream) ;
2040 extern __ssize_t getdelim (char **__restrict __lineptr,
2041                            size_t *__restrict __n, int __delimiter,
2042                            FILE *__restrict __stream) ;
2043 
2044 /* Like `getdelim', but reads up to a newline.
2045 
2046    This function is not part of POSIX and therefore no official
2047    cancellation point.  But due to similarity with an POSIX interface
2048    or due to the implementation it is a cancellation point and
2049    therefore not marked with __THROW.  */
2050 extern __ssize_t getline (char **__restrict __lineptr,
2051                           size_t *__restrict __n,
2052                           FILE *__restrict __stream) ;
2053 
2054 
2055 
2056 /* Write a string to STREAM.
2057 
2058    This function is a possible cancellation point and therefore not
2059    marked with __THROW.  */
2060 extern int fputs (const char *__restrict __s, FILE *__restrict __stream);
2061 
2062 /* Write a string, followed by a newline, to stdout.
2063 
2064    This function is a possible cancellation point and therefore not
2065    marked with __THROW.  */
2066 extern int puts (const char *__s);
2067 
2068 
2069 /* Push a character back onto the input buffer of STREAM.
2070 
2071    This function is a possible cancellation point and therefore not
2072    marked with __THROW.  */
2073 extern int ungetc (int __c, FILE *__stream);
2074 
2075 
2076 /* Read chunks of generic data from STREAM.
2077 
2078    This function is a possible cancellation point and therefore not
2079    marked with __THROW.  */
2080 extern size_t fread (void *__restrict __ptr, size_t __size,
2081        size_t __n, FILE *__restrict __stream) ;
2082 /* Write chunks of generic data to STREAM.
2083 
2084    This function is a possible cancellation point and therefore not
2085    marked with __THROW.  */
2086 extern size_t fwrite (const void *__restrict __ptr, size_t __size,
2087         size_t __n, FILE *__restrict __s);
2088 # 672 "/usr/include/stdio.h" 3 4
2089 /* Faster versions when locking is not necessary.
2090 
2091    These functions are not part of POSIX and therefore no official
2092    cancellation point.  But due to similarity with an POSIX interface
2093    or due to the implementation they are cancellation points and
2094    therefore not marked with __THROW.  */
2095 extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
2096          size_t __n, FILE *__restrict __stream) ;
2097 extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size,
2098           size_t __n, FILE *__restrict __stream);
2099 
2100 
2101 
2102 /* Seek to a certain position on STREAM.
2103 
2104    This function is a possible cancellation point and therefore not
2105    marked with __THROW.  */
2106 extern int fseek (FILE *__stream, long int __off, int __whence);
2107 /* Return the current position of STREAM.
2108 
2109    This function is a possible cancellation point and therefore not
2110    marked with __THROW.  */
2111 extern long int ftell (FILE *__stream) ;
2112 /* Rewind to the beginning of STREAM.
2113 
2114    This function is a possible cancellation point and therefore not
2115    marked with __THROW.  */
2116 extern void rewind (FILE *__stream);
2117 
2118 /* The Single Unix Specification, Version 2, specifies an alternative,
2119    more adequate interface for the two functions above which deal with
2120    file offset.  `long int' is not the right type.  These definitions
2121    are originally defined in the Large File Support API.  */
2122 
2123 
2124 
2125 /* Seek to a certain position on STREAM.
2126 
2127    This function is a possible cancellation point and therefore not
2128    marked with __THROW.  */
2129 extern int fseeko (FILE *__stream, __off_t __off, int __whence);
2130 /* Return the current position of STREAM.
2131 
2132    This function is a possible cancellation point and therefore not
2133    marked with __THROW.  */
2134 extern __off_t ftello (FILE *__stream) ;
2135 # 732 "/usr/include/stdio.h" 3 4
2136 /* Get STREAM's position.
2137 
2138    This function is a possible cancellation point and therefore not
2139    marked with __THROW.  */
2140 extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
2141 /* Set STREAM's position.
2142 
2143    This function is a possible cancellation point and therefore not
2144    marked with __THROW.  */
2145 extern int fsetpos (FILE *__stream, const fpos_t *__pos);
2146 # 761 "/usr/include/stdio.h" 3 4
2147 /* Clear the error and EOF indicators for STREAM.  */
2148 extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
2149 /* Return the EOF indicator for STREAM.  */
2150 extern int feof (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
2151 /* Return the error indicator for STREAM.  */
2152 extern int ferror (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
2153 
2154 
2155 /* Faster versions when locking is not required.  */
2156 extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
2157 extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
2158 extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
2159 
2160 
2161 
2162 /* Print a message describing the meaning of the value of errno.
2163 
2164    This function is a possible cancellation point and therefore not
2165    marked with __THROW.  */
2166 extern void perror (const char *__s);
2167 
2168 
2169 
2170 /* Return the system file descriptor for STREAM.  */
2171 extern int fileno (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
2172 
2173 
2174 
2175 /* Faster version when locking is not required.  */
2176 extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
2177 
2178 
2179 
2180 
2181 /* Create a new stream connected to a pipe running the given command.
2182 
2183    This function is a possible cancellation point and therefore not
2184    marked with __THROW.  */
2185 extern FILE *popen (const char *__command, const char *__modes) ;
2186 
2187 /* Close a stream opened by popen and return the status of its child.
2188 
2189    This function is a possible cancellation point and therefore not
2190    marked with __THROW.  */
2191 extern int pclose (FILE *__stream);
2192 
2193 
2194 
2195 
2196 /* Return the name of the controlling terminal.  */
2197 extern char *ctermid (char *__s) __attribute__ ((__nothrow__ , __leaf__));
2198 # 836 "/usr/include/stdio.h" 3 4
2199 /* These are defined in POSIX.1:1996.  */
2200 
2201 /* Acquire ownership of STREAM.  */
2202 extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
2203 
2204 /* Try to acquire ownership of STREAM but do not block if it is not
2205    possible.  */
2206 extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
2207 
2208 /* Relinquish the ownership granted for STREAM.  */
2209 extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
2210 # 855 "/usr/include/stdio.h" 3 4
2211 /* Slow-path routines used by the optimized inline functions in
2212    bits/stdio.h.  */
2213 extern int __uflow (FILE *);
2214 extern int __overflow (FILE *, int);
2215 
2216 /* If we are compiling with optimizing read this file.  It contains
2217    several optimizing inline functions and macros.  */
2218 
2219 
2220 
2221 
2222 
2223 
2224 
2225 # 1 "/usr/include/bits/floatn.h" 1 3 4
2226 /* Macros to control TS 18661-3 glibc features on x86.
2227    Copyright (C) 2017-2021 Free Software Foundation, Inc.
2228    This file is part of the GNU C Library.
2229 
2230    The GNU C Library is free software; you can redistribute it and/or
2231    modify it under the terms of the GNU Lesser General Public
2232    License as published by the Free Software Foundation; either
2233    version 2.1 of the License, or (at your option) any later version.
2234 
2235    The GNU C Library is distributed in the hope that it will be useful,
2236    but WITHOUT ANY WARRANTY; without even the implied warranty of
2237    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
2238    Lesser General Public License for more details.
2239 
2240    You should have received a copy of the GNU Lesser General Public
2241    License along with the GNU C Library; if not, see
2242    <https://www.gnu.org/licenses/>.  */
2243 # 870 "/usr/include/stdio.h" 2 3 4
2244 
2245 
2246 
2247 
2248 
2249 # 2 "hello.c" 2
2250 
2251 
2252 # 3 "hello.c"
2253 int main(int argc, char **argv)
2254 {
2255  //program c no out function, lib printf function
2256  printf("Hello world!\n");
2257 
2258  return 0;
2259 }

2)、编译成汇编代码

  gcc  -S fileName.c   //生成.s文件,默认生成gcc汇编格式代码

1     .file   "hello.c"
 2     .text
 3     .section    .rodata
 4 .LC0:
 5     .string "Hello world!"
 6     .text
 7     .globl  main
 8     .type   main, @function
 9 main:
10 .LFB0:
11     .cfi_startproc
12     pushq   %rbp
13     .cfi_def_cfa_offset 16
14     .cfi_offset 6, -16
15     movq    %rsp, %rbp
16     .cfi_def_cfa_register 6
17     subq    $16, %rsp
18     movl    %edi, -4(%rbp)
19     movq    %rsi, -16(%rbp)
20     leaq    .LC0(%rip), %rax
21     movq    %rax, %rdi
22     call    puts@PLT
23     movl    $0, %eax
24     leave
25     .cfi_def_cfa 7, 8
26     ret
27     .cfi_endproc
28 .LFE0:
29     .size   main, .-main
30     .ident  "GCC: (GNU) 11.1.0"
31     .section    .note.GNU-stack,"",@progbits

  还可以使用gcc -S -masm=intel fileName.c -o fileName.s

 1     .file   "hello.c"
 2     .intel_syntax noprefix
 3     .text
 4     .section    .rodata
 5 .LC0:
 6     .string "Hello world!"
 7     .text
 8     .globl  main
 9     .type   main, @function
10 main:
11 .LFB0:
12     .cfi_startproc
13     push    rbp
14     .cfi_def_cfa_offset 16
15     .cfi_offset 6, -16
16     mov rbp, rsp
17     .cfi_def_cfa_register 6
18     sub rsp, 16
19     mov DWORD PTR -4[rbp], edi
20     mov QWORD PTR -16[rbp], rsi
21     lea rax, .LC0[rip]
22     mov rdi, rax
23     call    puts@PLT
24     mov eax, 0
25     leave
26     .cfi_def_cfa 7, 8
27     ret
28     .cfi_endproc
29 .LFE0:
30     .size   main, .-main
31     .ident  "GCC: (GNU) 11.1.0"
32     .section    .note.GNU-stack,"",@progbits

  3)、汇编成目标代码

    gcc  -g  -c fileName.c    //生成.o文件,加上-g选项,可将汇编代码与C代码混合存储

  4)、链接,组合成一个执行文件

    gcc fileName.c  -l库名 -o fileName   //若库的路径不是默认路径,须

    gcc fileName.c  -L 库路径名  -o fileName  

  5)、输出所有步骤的中间文件 -save-temps

    gcc fileName.c   -save-temps  -o fileName

  6)、仅仅测试,不执行任何步骤 -fsyntax-only

    gcc  fileName.c   -fsyntax-only

  7)、同时编译多个文件

    gcc  -c fileName1.c fileName2.c ... fileNameN.c

    链接:

    gcc  fileName1.o fileName2.o ... fileNameN.o -o fileName

  文件类型与后缀名:

  .c  c源码

  .i  预处理后的输出结果

  .h  C的头文件

  .s  汇编代码

  .S  有C命令的汇编代码

  包含目录:

  1.-I 目录  [目录]

  2.-iquote 目录  [目录]

  3.-I  -在I左侧,只对尖括号的头文件搜索

  4. I- -在I右侧,对尖括号和双引号的头文件搜索   



这篇关于使用gcc编译C程序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程