Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
 Аватар для vbloodv
23 / 23 / 3
Регистрация: 15.12.2012
Сообщений: 314

Заголовочные файлы и файлы cpp

09.05.2013, 01:54. Показов 2579. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Со временем сложилось представление что при написании программ стоит разделять МЕТА данные и данные, но для лучшего понимания своих действий хотелось бы знать что происходит с подключенными заголовочными файлами. Расскажу на пальцах, имеется foo.h и foo.cpp если:
foo.h:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
#pragma once
#include <Windows.h>
#include "SuperSolders"
int gCOUNTMOUSERBUTTON = 8;
int array[] = {1,2,3,4,5,6};
class vbv
{
public:
    somemethod();
void somemethod();
}


foo.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
somemethod()
{
    somecode;
int x = x;
}
 
void somemethod(){};


Собственно вопрос, транслируются ли заголовочные файлы windows.h и SuperSolder именно в cpp и там "разварачиваются", что происходит с глобальными переменными.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.05.2013, 01:54
Ответы с готовыми решениями:

Заголовочные файлы .h и .cpp
Создаю библиотеку для работы с матрицами (функции): matrix.cpp: namespace MatrixFuncs { double...

Нужно ли к файлу .h подключать все заголовочные файлы, которые понадобятся в .cpp
Например, есть add.h и add.cpp В add.h прототип функции: void func(T); А тип T объявлен в другом заголовочном файле....

Заголовочные файлы .h, файлы исходного когда c/c++ и установление связи между ними
Всем добрый вечер!) Относительно недавно стал изучать c/c++, хочу полюбопытствовать ,так как появился вопрос. Почему при объявлении...

5
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
09.05.2013, 03:31
Код следовало бы дать компилящийся. Итак, имеем:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//foo.h
#include <windows.h>
#include "SuperSolders.h"
int gCOUNTMOUSERBUTTON = 8;
int array[] = {1,2,3,4,5,6};
class vbv
{
public:
    void somemethod(){};
};
 
//++++++++++++++++++++++++++=
 
//SuperSolders.h
int per= 0XCAFEBABE;
 
//++++++++++++++++++++++++++=
 
//foo.cpp
#include "foo.h"
int main () {
 return 0;
}
Командуем:
Bash
1
g++ -E -o foo.i foo.cpp
Получаем промежуточный файл foo.i, текстовый. Исследуем его на предмет вхождения содержимого заголовочных файлов. Оно там есть. Это если применять компилятор g++, как с остальными обстоят дела, не знаю.
1
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
09.05.2013, 11:49
Цитата Сообщение от vbloodv Посмотреть сообщение
что происходит с подключенными заголовочными файлами
C++
1
#include {имя файла}
полностью заменяется содержимым этого файла, обычный copy-paste, естественно что сам файл перед этим тоже проходит препроцессинг

Добавлено через 3 минуты
Цитата Сообщение от vbloodv Посмотреть сообщение
что происходит с глобальными переменными.
на этапе препроцессинга - ничего
1
 Аватар для vbloodv
23 / 23 / 3
Регистрация: 15.12.2012
Сообщений: 314
10.05.2013, 01:16  [ТС]
Цитата Сообщение от Jupiter Посмотреть сообщение
полностью заменяется содержимым этого файла, обычный copy-paste, естественно что сам файл перед этим тоже проходит препроцессинг
А эти данные попадают в конечном итоге в cpp файл или h, вопрос для меня актуален т.к. не совсем понятен при модульной компиляции заголовочные данные нужны только как мета-данные ?
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
10.05.2013, 01:20
vbloodv, после препроцессирования заголовочых файлов нет, только файлы с исходным кодом.
1
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
10.05.2013, 02:30
Цитата Сообщение от vbloodv Посмотреть сообщение
А эти данные попадают в конечном итоге в cpp
ответили же:
Цитата Сообщение от Jupiter Посмотреть сообщение
полностью заменяется содержимым этого файла
соответственно, он компилируется в составе cpp файла.
И если у Вас в заголовочном файле определяется какая-то переменная, то следовательно она попадет во все файлы в которые включается данный заголовок. Как результат - ошибка multiple definition
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.05.2013, 02:30
Помогаю со студенческими работами здесь

Работа в Visual Studio 2015 - как добавить файлы исходного кода и заголовочные файлы?
Приветствую всех! Столкнулся с тем, что решая задачи по книге Лафоре про графику, не смог добавить файлы .h и .cpp, скачав их с одной из...

Раздельная компиляция: что помещать в заголовочные файлы, а что в файлы реализации (исходники)?
Здравствуйте, я учусь пользоваться Visual Studio.Пишу программу, в которой создаются и разрушаются объекты, определенного пользователем...

заголовочные файлы
напишите пожалуйста,что делают заголов.файлы &lt;io.h&gt; и &lt;direct.h&gt; Добавлено через 8 минут и расшифруйте условие: ...

Заголовочные файлы
Подключил два заголовочных файла, при компиляции пишет, что не знает имени функции Header.h #pragma once float F1(float* ar1,...

Заголовочные файлы
Подскажите, во время компоновки, в итоге, &quot;присоединяются&quot; к экзешнику все функции/объекты и тдп. которые указаны в заголовочном файле, или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru