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右侧,对尖括号和双引号的头文件搜索