1 | :PROPERTIES:
|
---|
2 | :ID: 40c44577-6cd7-4eac-aac7-288a0537b7e9
|
---|
3 | :END:
|
---|
4 | #+title: C
|
---|
5 | * C
|
---|
6 | [[https://bell-labs.com/usr/dmr/www/chist.html][История разработки языка C]]
|
---|
7 | ** Стандарт C 2010:
|
---|
8 | https://port70.net/~nsz/c/c11/n1570.html
|
---|
9 |
|
---|
10 | ** Основные реализации:
|
---|
11 | - [[id:28f71607-81c7-42b4-9968-d22de5adba55][GCC]]
|
---|
12 | - [[id:ecfebd9f-7692-4d8a-98a5-cd35c3d38740][Clang]] (LLVM)
|
---|
13 |
|
---|
14 | ** Отличия между реализациями GCC и Clang LLVM:
|
---|
15 | https://en.terminalroot.com.br/gcc-vs-llvm-which-is-the-best-compiler/
|
---|
16 | *** Количество поддерживаемых платформ
|
---|
17 | Architectures Supported by GCC:
|
---|
18 | Alpha, ARM, AVR, Blackfin, Epiphany (GCC 4.8), H8 / 300, HC12, IA-32
|
---|
19 | (x86), IA-64 (Intel Itanium), MIPS, Motorola 68000, PA-RISC, PDP-11,
|
---|
20 | PowerPC, R8C / M16C / M32C, SPARC, SPU, SuperH, System / 390 / zSeries,
|
---|
21 | VAX, x86-64, 68HC11, A29K, CR16, C6x, D30V, DSP16xx, ETRAX CRIS, FR-30,
|
---|
22 | FR-V, Intel i960, IP2000, M32R, MCORE, MIL-STD-1750A, MMIX, MN10200,
|
---|
23 | MN10300, Motorola 88000, NS32K, IBM ROMP, RL78, Stormy16, V850, Xtensa,
|
---|
24 | Cortus APS3, ARC, AVR32, C166, D10V, EISC, eSi -RISC, Hexagon,
|
---|
25 | LatticeMico32, LatticeMico8, MeP, MicroBlaze, Motorola 6809, MSP430, NEC
|
---|
26 | SX architecture, Nios II and Nios, OpenRISC, PDP-10, PIC24 / dsPIC,
|
---|
27 | PIC32, Propeller, RISC-V, Saturn (HP48XGCC), System / 370, TIGCC (m68k
|
---|
28 | variant), TriCore, Z8000 and ZPU.
|
---|
29 |
|
---|
30 | Architectures Supported by LLVM:
|
---|
31 | X86, X86-64, PowerPC, PowerPC-64, ARM, Thumb, SPARC, Alpha, CellSPU,
|
---|
32 | MIPS, MSP430, SystemZ, WebAssembly, and XCore.
|
---|
33 |
|
---|
34 | *** API для работы
|
---|
35 | - У LLVM всё лучше со статическим анализом. GCC более highly coupled.
|
---|
36 | - У LLVM лучше с выводом ошибок
|
---|
37 |
|
---|
38 | ** Утилиты разработки (помимо компилятора):
|
---|
39 | - [[id:fe849377-d338-4347-b34f-3fa9a70c3e35][Make]]
|
---|
40 | - [[id:19992062-adc7-48e4-9f36-f630c92e7e70][GDB]]
|
---|
41 | - [[id:fdc70d71-d0a9-413b-a368-358995cb56e3][Valgrind]]
|
---|
42 |
|
---|
43 | ** Статьи
|
---|
44 | - [[https://habr.com/ru/company/ruvds/blog/562530/][Хабр: Почему я всё ещё люблю C, но при этом терпеть не могу C++?]]
|
---|
45 | - [[https://beej.us/guide/bgc/html/split/hello-world.html][Beej's C programming Guide]]
|
---|
46 |
|
---|
47 |
|
---|
48 | ** Материалы для изучения:
|
---|
49 | - [[https://fpl.cs.depaul.edu/jriely/373/extras/ctut.pdf][The GNU C Programming Tutorial]]
|
---|
50 | - [[http://mirror.yongbok.net/nongnu/c-prog-book/learning_gnu_c.html][Learning GNU C]]
|
---|
51 | - [[https://www.gnu.org/software/libc/manual/html_mono/libc.html][GNU C Library]]
|
---|
52 | - [[https://w96k.dev/public/doc/gnu-c/][GNU C Manual]]
|
---|
53 | - https://www.memorymanagement.org/index.html
|
---|
54 |
|
---|
55 | ** Как узнать код возврата процесса
|
---|
56 | #+begin_src bash
|
---|
57 | echo $?
|
---|
58 | #+end_src
|
---|
59 |
|
---|
60 | #+RESULTS:
|
---|
61 | : 0
|
---|