Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
hepr
61 / 33 / 5
Регистрация: 21.10.2010
Сообщений: 539
#1

Отличие headerов "something.h" и "something" - C++

28.03.2012, 15:35. Просмотров 435. Ответов 7
Метки нет (Все метки)

Здравствуйте, не подскажите чем отличается:
#include "something.h"
и
#include "something"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2012, 15:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отличие headerов "something.h" и "something" (C++):

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно". Я так...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс "вентилятор" содержащий в себе классы:...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата" - C++
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в программе ввести в массив данные и...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.03.2012, 15:50 #2
У второго отсутствует расширение.
hepr
61 / 33 / 5
Регистрация: 21.10.2010
Сообщений: 539
28.03.2012, 15:58  [ТС] #3
И что?
То есть оно автоматом проставляется?
А если да, то почему это работает:
C++
1
2
3
4
5
6
#include "iostream"
int main()
{
    system("pause");
    return 0;
}
А это нет:
C++
1
2
3
4
5
6
#include "iostream.h"
int main()
{
    system("pause");
    return 0;
}
(Выводит: Ошибка 1 fatal error C1083: Не удается открыть файл include: iostream.h: No such file or directory c:\users\ruzik\documents\visual studio 2008\projects\console\console\main.cpp 1
)
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.03.2012, 16:06 #4
Во-первых, я надеюсь, вы знаете, что хедеры, заключенные в "" ищутся сначала в текущей папке. Соответсвенно, писать "iostream" не стоит, я могу закинуть в папку с проектом пустой файл iostream и компилится уже ничего не будет
Во-вторых, нет, ничего не подставляется. Просто у этих файлов нет расширения. Я точно не знаю, зачем так сделано, но могу предположить, что таким образом выделяется стандартная библиотека.
В-третьих, второй пример не работает, поскольку файл iostream.h не существует.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
28.03.2012, 16:11 #5
soon, В сущности да, выделяется, к примеру в gcc - реализация практически вся реальная реализация лежит в папке bits в .h файлах. А файлы без расширения включают .h файлы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/** @file include/vector
 *  This is a Standard C++ Library header.
 */
 
#ifndef _GLIBCXX_VECTOR
#define _GLIBCXX_VECTOR 1
 
#pragma GCC system_header
 
#include <bits/stl_algobase.h>
#include <bits/allocator.h>
#include <bits/stl_construct.h>
#include <bits/stl_uninitialized.h>
#include <bits/stl_vector.h>
#include <bits/stl_bvector.h> 
#include <bits/range_access.h>
 
#ifndef _GLIBCXX_EXPORT_TEMPLATE
# include <bits/vector.tcc>
#endif
 
#ifdef _GLIBCXX_DEBUG
# include <debug/vector>
#endif
 
#ifdef _GLIBCXX_PROFILE
# include <profile/vector>
#endif
 
#endif /* _GLIBCXX_VECTOR */
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
29.03.2012, 00:51 #6
hepr, вы никогда не пробовали заинклюдить txt-файл? А rar? Попробуйте, узнаете много нового))
Evg
Эксперт CАвтор FAQ
17630 / 5854 / 376
Регистрация: 30.03.2009
Сообщений: 16,141
Записей в блоге: 26
29.03.2012, 08:51 #7
Цитата Сообщение от hepr Посмотреть сообщение
А если да, то почему это работает
Первое отличается от второго тем, что это попросту два разный файла. Не вдаваясь в подробности можно сказать, что они оба содержат внутри себя одни и те же кишки, но в одном файле вокруг кишков дополнительно приклеен namespace std. Другой разницы между ними нет

Касаемо файлов с расширением .h и без него: Возникает ошибка с using namespace std; и include <?> для cout
Что такое #include вкратце можешь почитать тут: Для чего нужен define?
Подробно тут: http://www.cyberforum.ru/blogs/18334/blog100.html
Байт
Эксперт C
15988 / 10256 / 1536
Регистрация: 24.12.2010
Сообщений: 19,345
29.03.2012, 10:14 #8
Цитата Сообщение от hepr Посмотреть сообщение
И что?
То есть оно автоматом проставляется?
Ничего автоматом не подставляется. Читается именно тот файл, что вами указан. Но он может в себя включать другой файл. А тот - третий и т.д. Там такая паутина может образоваться! Зачем это сделано - не знаю.
Для прояснения ситуации посмотрите какой-нибудь инклуде-файл, потом тот, кого он подключает и тд...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2012, 10:14
Привет! Вот еще темы с ответами:

Структура «Преподаватель» с полями "ФИО", "стаж", "категория", "нагрузка" - C++
Функция - расчёт зарплаты по нагрузке и оплате часа для определенной категории. Категория Оплата часа Вторая 150 Первая 200 ...

Реализовать структуру "Анкета" с полями "Фамилия", "Пол" и "Адрес" - C++
Здравствуйте. Проходим тему Структуры, не могу понять, как определить количество, само задание: #include &lt;iostream&gt; #include...

по строкам.замените в слове сочетание "му" на "а" , а букву "ы" на "ца". очень нужно - C++
замените в слове сочетание &quot;му&quot; на &quot;а&quot; , а букву &quot;ы&quot; на &quot;ца&quot;. очень нужно Добавлено через 21 час 4 минуты неужели никто не знает...

Создать иерархию классов "Фирма", "Бухгалтер", "Сотрудник", "Зарплата" - C++
Само по себе понятие &quot;зарплата&quot; не особенно конкретное: оно включает и почасовую, и ставочную зарплату, и комиссионные, и процент с продаж....


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.03.2012, 10:14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru