Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 3
Регистрация: 02.04.2015
Сообщений: 169
1

Директива include

05.10.2015, 00:57. Показов 1178. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Допустим я создаю файл header.h:
C++
1
int N();
, а так же файл header.cpp:
C++
1
2
3
4
5
#include "header.h"  
int N()
{
return 2;
}
Каким образом подключая в своем файле библиотеку header.h и вызывая функцию N, я получаю результат 2. В этом файле-заголовке только прототип!!! Он никак же не связан с файлом header.cpp
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.10.2015, 00:57
Ответы с готовыми решениями:

Директива #include
Всем привет. Пишу программу по книге Дейтел Х., Дейтел П - Как программировать на C++ FIG6_5.cpp, я...

Директива #include
Всем Привет! Помогите мне разобраться пожалуйста! Я не могу понять как работает директива #include....

Работа с файлами в C# с исп. библиотек #include <stdio.h> #include <stdlib.h> #include <math.h> #include <io.h>
В типизированном файле записаны названия городов и их численность. Увеличить численность каждого...

#include<iostream>// подключение библиотек #include <conio.h> #include <climits>
помогите для этой программы сделать блок-схему. Пожалуйста #include&lt;iostream&gt;// подключение...

4
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
05.10.2015, 01:12 2
Компилятору необходимо дать файл .cpp, а он уже знает о .h
0
Модератор
Эксперт по электронике
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,524
05.10.2015, 01:21 3
Цитата Сообщение от bambique Посмотреть сообщение
Каким образом подключая в своем файле библиотеку header.h
вот она ошибка
не библиотеку а заголовочный файл
библиотеки они в lib, dll если уже скомпонованы если нет то в c cpp
в данном случае нужно дать команду компилятору чтобы он скомпилил объектный файл из header.cpp
а линкеру чтобы слинковал этот объекник
Как это делается? у каждого компилятора свой путь, но в основном в современных IDE добавить в проект
0
1 / 1 / 3
Регистрация: 02.04.2015
Сообщений: 169
05.10.2015, 01:34  [ТС] 4
Цитата Сообщение от ValeryS Посмотреть сообщение
вот она ошибка
не библиотеку а заголовочный файл
библиотеки они в lib, dll если уже скомпонованы если нет то в c cpp
в данном случае нужно дать команду компилятору чтобы он скомпилил объектный файл из header.cpp
а линкеру чтобы слинковал этот объекник
Как это делается? у каждого компилятора свой путь, но в основном в современных IDE добавить в проект
обьектный файл - header.h?
Слинковал куда?
В Visual studio я так и делал, добавлял в проект, но если я добавлю 10 файлов с разными названиями и с определением функции N, что он выберет? Я не вижу связи заголовочного файла с файлом .cpp, ее нет и я ее нигде не устанавливаю... И все работает.
0
Модератор
Эксперт по электронике
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,524
05.10.2015, 02:01 5
Лучший ответ Сообщение было отмечено bambique как решение

Решение

Цитата Сообщение от bambique Посмотреть сообщение
обьектный файл - header.h?
нет
header.h это заголовочный файл
Цитата Сообщение от bambique Посмотреть сообщение
не вижу связи заголовочного файла с файлом .cpp,
а это что
Цитата Сообщение от bambique Посмотреть сообщение
#include "header.h"
Цитата Сообщение от bambique Посмотреть сообщение
Слинковал куда?
сначала идет препроцессор
заменяет макросы
вставляет вместо include содержимое файлов
и еще куча работы, подготавливает си файл к компилции
потом компилятор компилит файлы,
результат компиляции это объектные файлы
потом линкер из объектных файлов создает исполняемый код
вот так, в грубом приближении, выглядит компиляция
Цитата Сообщение от bambique Посмотреть сообщение
но если я добавлю 10 файлов с разными названиями и с определением функции N, что он выберет?
ничего не выберет
линкер заверещит что куча функций с одним именем и завершит все ошибкой
но есть одна тонкость для С++, перегрузка функций
искажение имен
если будут две функции
C++
1
2
int N(int)
int N(char)
то для линкера это будет разные функции
компилятор изменит имена функций типа N_int и N_char
на самом деле имена будут другие,никто их не нормировал и каждая фирма выбирает свой путь
0
05.10.2015, 02:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.10.2015, 02:01
Помогаю со студенческими работами здесь

Чем отличается #include <cstring>, #include <string> и #include <string.h>?
Доброго времени суток :) Пишу свой класс и мне для нужны функции для работы со строками. Когда...

Не находит #include<iomanip.h> #include<conio.h>
Само задание: Услуги телефонной сети оплачиваются по следующему правилу: за разговоры до A минут в...

Какая разница между #include<> и #include""?
Позволите спросить несколько вопросов: 1)Какая разница между #include&lt;&gt; и #include&quot;&quot; 2)Если нужно...

Директива using
Задался вопросом по поводу директива using. #include &lt;iostream&gt; namespace x{int a = 100; int b...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru