Заголовочные файлы - где и что прописать? - C (СИ)
Формулировка задачи:
Вопросы:
1) Не очень понимаю где какие include надо писать. В main.cpp, head.h, functions.cpp. Допустим в файле определения функций functions.cpp используются различные библиотеки - string.h, stdlib.h и т.д. Достаточно ли написать #include head.h и все эти библиотеки подключить в head.h. Что тогда подключать в main.cpp. Только include "head.h" и библиотеки, которые нужны именно в main.cpp, но не в используемых функциях из functions.cpp?
2) Что если во всех 3х файлах включать всё подряд (все include) Компилятор сам оставит по 1 экземпляру или включит все?
3) Не пойму как работать со структурой в этом всём.
есть
Если не было бы указателя, то в функциях можно было написать аргумент Record rec1. Но с указателем надо где-то выделять память. Где это надо делать-в head.h или functions.cpp
#define M 50
struct Record{
char str1[M];
char str2[M];
char str3[M];
} *p;Решение задачи: «Заголовочные файлы - где и что прописать?»
textual
Листинг программы
extern Record *tmp, *search;
void test()
{
scanf("%s", search->str1);
printf("%s\n", search->str1);
}
Объяснение кода листинга программы
Record *tmp- в данном кодеtmpэто указатель на структуруRecord.Record *search- в данном кодеsearchэто указатель на структуруRecord.scanf(%s, search->str1)- в данном коде происходит чтение строки с помощью функцииscanf. Введенная строка сохраняется в полеstr1структурыsearch.printf(%s\n, search->str1)- в данном коде выводится содержимое поляstr1структурыsearchс помощью функцииprintf.void test()- в данном кодеtestэто функция, которая не возвращает значение.- В данном коде нет использования переменных
tmpиsearchкроме как для чтения и вывода строки. - В данном коде нет обработки ошибок при чтении строки с помощью
scanf. - В данном коде нет других действий кроме чтения строки и ее вывода.
- В данном коде нет использования других функций или библиотек кроме
scanfиprintf. - В данном коде нет других объявлений переменных кроме
tmpиsearch. - В данном коде нет других структур данных кроме структуры
Record. - В данном коде нет других файлов, включений или библиотек.
- В данном коде нет других циклов, условий или операторов.
- В данном коде нет других действий с памятью кроме чтения и вывода строки.
- В данном коде нет других действий с файлами или устройствами ввода-вывода.
- В данном коде нет других действий с числами, булевыми значениями или символами.
- В данном коде нет других действий с указателями или ссылками.
- В данном коде нет других действий с памятью, кроме чтения и вывода строки.
- В данном коде нет других действий с функциями или процедурами.
- В данном коде нет других действий с типами данных или переменными.