# 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;
}
```