Вынести функцию в отдельный файл C/C++

Вынести функцию в отдельный файл C/C++
Пример проекта с вынесенной функцией в отдельный файл

Как вынести функцию в отдельный файл?

Для того чтобы вынести функцию в отдельный файл нам понадобится разбить нашу программу на несколько частей.

Обычно это делают так:

  • Прототипы функций помещаются в заголовочный файл (.h)
  • Реализации (определения) функций помещаются в отдельный .cpp файл
  • В файле (с main()), где вызываются функции, подключается файл с прототипами (.h)

Теперь разберем как это сделать на примере.

Допустим у нас есть программа в которой мы запрашиваем X, а на экран должно вывестись X²

#include <stdio.h>
#include <conio.h>
#include <locale.h>

int x;

int main() {
  setlocale(0, "Russian");

  printf("Введите X\n");
  scanf_s("%d", & x); //тут будем вызывать нашу функцию _getch();

  return 0;
}

1. Заголовочный файл (.h)

Создаем заголовочный файл и помещаем туда прототип нашей функции:

Создание заголовочного файла (.h)
Создание заголовочного файла (.h)

Обязательно используем конструкцию для защиты от множественных включений в один файл:

#ifndef Header_h
#define Header_h
//Код
#endif //Header

Получится:

#ifndef Header_h
#define Header_h
void func(); //прототип функции
#endif //Header

2. Реализация функции (.c/.cpp)

Создаем отдельный .cpp файл (function.cpp):

Создание отдельного файла под функцию
Создание файла с реализацией функции (.cpp)

Пишем реализацию функции:

#include <stdio.h>

extern int x;

void func() {
  printf("X^2 будет: %d", x * x); //тело функции
}

3. Подключение заголовочного файла (.h)

Открываем файл где располагается main(), и подключаем заголовочный файл (.h) в нашем случае Header.h:

#include "Header.h"

Затем вызываем функцию:

func();

Получился вот такой main.cpp:

#include <stdio.h>
#include <conio.h>
#include <locale.h>

#include "Header.h"

int x;

int main() {
  setlocale(0, "Russian");

  printf("Введите X\n");
  scanf_s("%d", & x);
  func();

  _getch();
  return 0;
}

Проверяем:

Проверяем код на работоспособность
Демонстрация работы функции вынесенной в отдельный файл .cpp

Вуаля, все работает.