1

Тема: Яка різниця між заголовним файлом, та файлом з функціями?

Хай. Допомагаю декому з лабами на С++, і одною з умов є розділення коду на три частини:

  • основний код; (це має бути лише метод main, я так розумію)

  • файл з визначенням функцій; (оце я хз що таке)

  • заголовний файл. (розумію, що це %filename%.h ,але що в ньому має бути, я хз)

Що то за файли такі мають бути, і як їх підключати?
p.s. код складається з класу, структури, котра використовує цей клас, та двох функцій

2

Re: Яка різниця між заголовним файлом, та файлом з функціями?

ну один файл .срр чисто з функцією main
один файл .срр, в якому описуються фунції (в main вони лише викликаються)
один файл .h, в якому описуються оголошення функцій, підключення бібліотек

в .срр просто прописувати підключення .h файлу

3

Re: Яка різниця між заголовним файлом, та файлом з функціями?

Cyan написав:

ну один файл .срр чисто з функцією main
один файл .срр, в якому описуються фунції (в main вони лише викликаються)
один файл .h, в якому описуються оголошення функцій, підключення бібліотек

в .срр просто прописувати підключення .h файлу

а той .cpp так само підключати, як і .h ?

4

Re: Яка різниця між заголовним файлом, та файлом з функціями?

.cрр файли не підключаються одне одного - один знає про існування іншого завдяки .h

5

Re: Яка різниця між заголовним файлом, та файлом з функціями?

Cyan написав:

.cрр файли не підключаються одне одного - один знає про існування іншого завдяки .h

кхм, то як в .h підключити інший .cpp, шоб ще інший використовував і .h і .cpp?

6

Re: Яка різниця між заголовним файлом, та файлом з функціями?

просто в кожному .срр прописуєте

#include "blabla.h"

де, blabla.h - те, що ви створили

7

Re: Яка різниця між заголовним файлом, та файлом з функціями?

Cyan написав:

просто в кожному .срр прописуєте

#include "blabla.h"

де, blabla.h - те, що ви створили

а в blabla.h що писати?

8 Востаннє редагувалося Cyan (23.10.2014 21:20:03)

Re: Яка різниця між заголовним файлом, та файлом з функціями?

FakiNyan написав:

а в blabla.h що писати?

всі #include <бібліотека> та оголошення функцій

UPD:  ще, здається, там описуються класи та структури (ну що вони існують і що мають)

9 Востаннє редагувалося koala (23.10.2014 21:20:16)

Re: Яка різниця між заголовним файлом, та файлом з функціями?

Ідея така: компілятор створює з .cpp-файлів об'єктні файли (.o чи .obj)- це майже машинний код, але з позначками, де які ідектифікатори; після цього такі файли збирає компонувальник (linker) в виконуваний файл. Завдяки цьому можна не компілювати файли, які не змінилися, це економить час компіляції і дозволяє поширювати бібліотеки без сирцевого коду.
Але для того, щоб використовувати функції і класи зі скомпільованих файлів, компілятору слід отримати загальні визначення того, що там міститься; для цього і потрібні заголовки. Тобто в .h-файлах має бути

void f(int p);//прототип функції

а в .cpp - тіло:

void f(int p)
{
  std::cout << p;
}

Те саме - для класів і т.д.

10

Re: Яка різниця між заголовним файлом, та файлом з функціями?

Cyan написав:
FakiNyan написав:

а в blabla.h що писати?

всі #include <бібліотека> та оголошення функцій

і все? може ви шось не те зрозуміли ,чи я.
Мені тре, аби всього було 3 файли.
Ну ок, один файл чисто під main, ще один .h під функції, а ще один файл який тре?
Там же написано заголовний файл, і файл з визначенням функцій.

11

Re: Яка різниця між заголовним файлом, та файлом з функціями?

FakiNyan написав:
Cyan написав:
FakiNyan написав:

а в blabla.h що писати?

всі #include <бібліотека> та оголошення функцій

і все? може ви шось не те зрозуміли ,чи я.
Мені тре, аби всього було 3 файли.
Ну ок, один файл чисто під main, ще один .h під функції, а ще один файл який тре?
Там же написано заголовний файл, і файл з визначенням функцій.

ви хоч розумієте різницю між оголошенням функції та її визначенням?

12

Re: Яка різниця між заголовним файлом, та файлом з функціями?

koala написав:

Ідея така: компілятор створює з .cpp-файлів об'єктні файли (.o чи .obj)- це майже машинний код, але з позначками, де які ідектифікатори; після цього такі файли збирає компонувальник (linker) в виконуваний файл. Завдяки цьому можна не компілювати файли, які не змінилися, це економить час компіляції і дозволяє поширювати бібліотеки без сирцевого коду.
Але для того, щоб використовувати функції і класи зі скомпільованих файлів, компілятору слід отримати загальні визначення того, що там міститься; для цього і потрібні заголовки. Тобто в .h-файлах має бути

void f(int p);//прототип функції

а в .cpp - тіло:

void f(int p)
{
  std::cout << p;
}

А як бути з класом? Там же в мене методи є. І в якому .cpp мають бути тіла функцій?

13

Re: Яка різниця між заголовним файлом, та файлом з функціями?

Мова йде про те, щоб створити власну маленьку бібліотеку функцій і класів, і скористатися нею в main. Що незрозуміло?

14

Re: Яка різниця між заголовним файлом, та файлом з функціями?

koala написав:

Мова йде про те, щоб створити власну маленьку бібліотеку функцій і класів, і скористатися нею в main. Що незрозуміло?

Ну ви сказали, що в .h мають бути сигнатури функцій, а в .cpp тіла функцій.
Незрозуміло, в якому .cpp мають бути тіла функцій. І якщо це не .cpp з main'ом, то як зв'язати .h з .cpp, в котрому тіла функцій.

15

Re: Яка різниця між заголовним файлом, та файлом з функціями?

Коли ви пишете

#include<iostream>

то включаєте файл, який містить тільки заголовки. Скомпільований об'єктний файл iostream міститься окремо і функції звідти під'єднуються компонувальником. Вам треба зробити аналогічну систему для своїх функцій. Так ясно?
Як конкретно додати файли - залежить від компонувальника, але більшість IDE нормально обробляють просте додавання файлів в проект.

Подякували: FakiNyan1

16

Re: Яка різниця між заголовним файлом, та файлом з функціями?

FakiNyan написав:

Незрозуміло, в якому .cpp мають бути тіла функцій. І якщо це не .cpp з main'ом, то як зв'язати .h з .cpp, в котрому тіла функцій.

і ще раз по порядку:

в одному .срр тупо main з

Cyan написав:
#include "blabla.h"

де, blabla.h - те, що ви створили

в .h прописуєте інші бібліотеки, які використовуєте, оголошення функцій і, наскільки я розумію (слабо пам'ятаю, але здається це так), класи та структури з усім що вони мають, але без детального опису функцій-методів, щоб обидва .срр просто знали про існування класів та структур і все

в іншому .срр описуєте функції (отак берете і прямо пишете) і звичайно ж

Cyan написав:
#include "blabla.h"

де, blabla.h - те, що ви створили

ПРОФІТ

Подякували: FakiNyan1

17

Re: Яка різниця між заголовним файлом, та файлом з функціями?

я тілько більше заплутався 8)

18

Re: Яка різниця між заголовним файлом, та файлом з функціями?

Cyan написав:
FakiNyan написав:

Незрозуміло, в якому .cpp мають бути тіла функцій. І якщо це не .cpp з main'ом, то як зв'язати .h з .cpp, в котрому тіла функцій.

і ще раз по порядку:

в одному .срр тупо main з

Cyan написав:
#include "blabla.h"

де, blabla.h - те, що ви створили

в .h прописуєте інші бібліотеки, які використовуєте, оголошення функцій і, наскільки я розумію (слабо пам'ятаю, але здається це так), класи та структури з усім що вони мають, але без детального опису функцій-методів, щоб обидва .срр просто знали про існування класів та структур і все

в іншому .срр описуєте функції (отак берете і прямо пишете) і звичайно ж

Cyan написав:
#include "blabla.h"

де, blabla.h - те, що ви створили

ПРОФІТ

зара спробую

19

Re: Яка різниця між заголовним файлом, та файлом з функціями?

xDD дуже працює! дуже дякую, пані Cyan

20

Re: Яка різниця між заголовним файлом, та файлом з функціями?

Cyan написав:
FakiNyan написав:
Cyan написав:

всі #include <бібліотека> та оголошення функцій

і все? може ви шось не те зрозуміли ,чи я.
Мені тре, аби всього було 3 файли.
Ну ок, один файл чисто під main, ще один .h під функції, а ще один файл який тре?
Там же написано заголовний файл, і файл з визначенням функцій.

ви хоч розумієте різницю між оголошенням функції та її визначенням?

Прихований текст

я вас зара вб'ю!!1