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

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

Войти
Регистрация
Восстановить пароль
 
hepr
 Аватар для hepr
60 / 32 / 5
Регистрация: 21.10.2010
Сообщений: 538
#1

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

28.03.2012, 15:35. Просмотров 418. Ответов 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++
Вопрос "хорошего тона", "стиля" в программировании - правильное использование #include C++
Сколькими способами можно получить строку "В" из строки "А", вычеркивая некоторые символы C++
warning C4244: =: преобразование "double" в "float", возможна потеря данных C++
C++ Превратить заданную пользователем дату в формате "дд.мм.гг" в формат "месяц дд. год"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.03.2012, 15:50     Отличие headerов "something.h" и "something" #2
У второго отсутствует расширение.
hepr
 Аватар для hepr
60 / 32 / 5
Регистрация: 21.10.2010
Сообщений: 538
28.03.2012, 15:58  [ТС]     Отличие headerов "something.h" и "something" #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
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.03.2012, 16:06     Отличие headerов "something.h" и "something" #4
Во-первых, я надеюсь, вы знаете, что хедеры, заключенные в "" ищутся сначала в текущей папке. Соответсвенно, писать "iostream" не стоит, я могу закинуть в папку с проектом пустой файл iostream и компилится уже ничего не будет
Во-вторых, нет, ничего не подставляется. Просто у этих файлов нет расширения. Я точно не знаю, зачем так сделано, но могу предположить, что таким образом выделяется стандартная библиотека.
В-третьих, второй пример не работает, поскольку файл iostream.h не существует.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
28.03.2012, 16:11     Отличие headerов "something.h" и "something" #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
Эксперт C++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
29.03.2012, 00:51     Отличие headerов "something.h" и "something" #6
hepr, вы никогда не пробовали заинклюдить txt-файл? А rar? Попробуйте, узнаете много нового))
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17011 / 5416 / 335
Регистрация: 30.03.2009
Сообщений: 14,660
Записей в блоге: 26
29.03.2012, 08:51     Отличие headerов "something.h" и "something" #7
Цитата Сообщение от hepr Посмотреть сообщение
А если да, то почему это работает
Первое отличается от второго тем, что это попросту два разный файла. Не вдаваясь в подробности можно сказать, что они оба содержат внутри себя одни и те же кишки, но в одном файле вокруг кишков дополнительно приклеен namespace std. Другой разницы между ними нет

Касаемо файлов с расширением .h и без него: Возникает ошибка с using namespace std; и include <?> для cout
Что такое #include вкратце можешь почитать тут: Для чего нужен define?
Подробно тут: http://www.cyberforum.ru/blogs/18334/blog100.html
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2012, 10:14     Отличие headerов "something.h" и "something"
Еще ссылки по теме:

C++ Подсчитать сумму "серых" элементов, а "черные" сложить только один раз
ткните мордой плз на описание конструкций типа defect?"brak":"goden" C++
C++ Исправить ошибку C2079 "MiniPlayer::music" использует неопределенный class "MiniMusic"
C++ Удалить из текста все слова, оканчивающиеся группой букв "ing" и "ed"
Ошибка преобразование "time_t" в "unsigned int", возможна потеря данных C++

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

Или воспользуйтесь поиском по форуму:
Байт
Эксперт C
 Аватар для Байт
15028 / 9430 / 1377
Регистрация: 24.12.2010
Сообщений: 17,426
29.03.2012, 10:14     Отличие headerов "something.h" и "something" #8
Цитата Сообщение от hepr Посмотреть сообщение
И что?
То есть оно автоматом проставляется?
Ничего автоматом не подставляется. Читается именно тот файл, что вами указан. Но он может в себя включать другой файл. А тот - третий и т.д. Там такая паутина может образоваться! Зачем это сделано - не знаю.
Для прояснения ситуации посмотрите какой-нибудь инклуде-файл, потом тот, кого он подключает и тд...
Yandex
Объявления
29.03.2012, 10:14     Отличие headerов "something.h" и "something"
Ответ Создать тему
Опции темы

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