The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Логика"
Отправлено skb7, 04-Ноя-14 19:58 
> Обьясни у каждого .h файла есть .c
> Или бывает так что .h есть,  а .c нет?
> то что .c может быть без .h понятно

Компилируется именно .c файл (в объектный файл), .h файл не компилируется. Перед этапом компиляции запускается препроцессор и просто заменяет все строки "#include" содержимым указанного .h файла.

Так что да, может быть .h без соответствующего .c файла. Например, у тебя есть разные модули (.c файлы): модуль для датчика температуры, модуль для общения с дисплеем, модуль для общения с микросхемой RTC и т.д. Во всех модулях тебе нужно получать нижний и верхний байт от двухбайтной переменной. Можно сделать хедер, назвать его например "common.h":


#ifndef COMMON_H
#define COMMON_H

#include <stdint.h>

/* Routines to get the high and low byte of 16-bit word */
#define HI(x) ((uint8_t)(x >> 8))
#define LO(x) ((uint8_t)(x))

#endif /* COMMON_H */

Дальше в каждом модуле подключить этот хедер и использовать макросы из него. При это не будет никакого "common.c" файла и всё будет работать.

На самом деле в .h файлы обычно засовывают две вещи:
1. объявления функций какого-то .c файла, т.е. интерфейс этого .c файла (чтобы другие .c файлы могли юзать эти функции подключая этот хедер)
2. всякие макросы, которые могут использованы разными модулями (.c файлами)

В свою очередь без .h файла тоже можно обойтись -- просто скопировать руками содержимое .h файла вместо соответствующей строки #include.

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру