# 01 лекция
Крупные компиляторы C/C++ (3,5 независимых реализаций):
1) Clang(LLVM)
2) GCC (Gnu Compiler Coliction)
3) Microsoft (Visual Studio)
4) (3.5) Intel (парсер - clang) (исходно (генерация кода) - своя реализация)
Про чистый си можно порекомендовать книжку Керниган Ричи - язык программирования СИ, от создателя языка, есть переводы на русский, но есть и плохие переводы.
функция - `тип-возвр-значения имя (аргументы)`
```c=
#include <stdio.h>
// Копирует сюда заголовочный файл стандартной библиотеки ввода-вывода
void f(void); //обьявления функций
int g(void);
n(void);
int main(void) // Пустые строки на C++ эквивал. void - ничего не принимает
// На си НЕ эквивалент
{
f(); // вызов функции f
g();
int a = n(); // a == 1
return 0; // Стандарт разрешает не писать, только в main
}
// Реализация функций
void f(void) // ничего не возвращает, ничего не принимает
// тело функции
{
printf("Hello!\n");
return; //выход из функций и ничего не вернем
}
int g(void) // возвращает int, ничего не принимает
{
printf("Hello!\n");
return 0; // вернуть 0
}
n(void) // возвращает int, ничего не принимает
{
printf("Hello!\n");
return 1; // вернуть 1
}
```
> f(void) и в С, и в С++ означает, что функция не имеет параметров, а f() в С++ означает то же самое, а в некоторых стандартах С — что функция имеет неизвестное число параметров
---