---
# System prepended metadata

title: 02 лекция

---

# 02 лекция

```c=
#include <stdio.h>

int main(void)    
{
    int a=3, b=5; 
    printf("a+b=%d\n", sum(a, b));
    return 0;    
}

int sum(int a, int b)
{
    return a + b;
}
```

```c=
#include <stdio.h>

int sum(int, int);

int main(void)    
{
    int a=3, b=5; 
    printf("a+b=%d\n", sum(a, b));
    return 0;    
}

int sum(int x, int y)
{
    return x + y;
}
```

```c=
#include <stdio.h>

int sum(int, int);

int main(void)    
{
    int a=3, b=5; 
    printf("a+b=%d\n", sum(a, b));
    return 0;    
}

int sum(int b, int a)
{
    printf("a=%d, b=%d\n", a, b);
    return a + b;
}
```


**Как можно написать реализацию функции в другом файле?**
:::warning
> [color=#B22222] sum.c
```с
int sum(int a, int b)    // можно релизовать в этом файле
{
    return a + b;
}
```

> [color=#32CD32] main.c 
```с
#include <stdio.h>

int sum(int a, int b);     // если обьявить

int main(void)    
{
    int a=3, b=5; 
    printf("a+b=%d\n", sum(a, b));    // можно использовать
    return 0;    
}
```
:::
**Когда есть прототип, функция может быть реализованная не только после, но и в другом файле**

ИЛИ
:::success 
> [color=#B22222] sum.c
```c
int sum(int a, int b)    // можно релизовать в этом файле
{
    return a + b;
}
```
> [color=#4682B4] sum.h
```
int sum(int a, int b);    // можно обьявить в этом файле
```
> [color=#32CD32] main.c 
```c
#include <stdio.h>
#include "sum.h"         // можно подключить заголовочный файл
                         // "" пишится вместо <> тогда, когда у вас подключаемый файл находится в текущей рабочей папке 
int main(void)    
{
    int a=3, b=5; 
    printf("a+b=%d\n", sum(a, b));    // можно использовать
    return 0;    
}
```
:::success
При компиляции `#include <>` подключаемый файл сначала ищется в стандартных каталогах, а потом в текущей рабочей папке
При компиляции `#include ""` подключаемый файл ищется только в текущем рабочем каталоге
*текущая рабочая папка, в данном случае, откуда запустили компилятор
:::
>текущая рабочая папка в остальных случаях (в других контекстах, например при открытие файла) - место откуда запустили ваш `.exe` (исполяемый файл, `.exe` - это расширение исполняемых файлов под `windows`)
---

ОШИБКА КОМПИЛЯЦИИ (если бы они были в разных файлах - ошибка линковки)
```c=
#include <stdio.h>

int sum(int x , int y);
float sum(int n , int m);

int main(void)    
{
    int a=3, b=5; 
    printf("a+b=%d\n", sum(a, b));
    return 0;    
}

int sum(int x, int y)
{
    return x + y;
}

int sum(int n, int m)
{
    return n + m;
}
```