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

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

Восстановить пароль Регистрация
 
hepr
 Аватар для hepr
60 / 32 / 5
Регистрация: 21.10.2010
Сообщений: 538
28.03.2012, 15:35     Отличие headerов "something.h" и "something" #1
Здравствуйте, не подскажите чем отличается:
#include "something.h"
и
#include "something"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 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++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
29.03.2012, 00:51     Отличие headerов "something.h" и "something" #6
hepr, вы никогда не пробовали заинклюдить txt-файл? А rar? Попробуйте, узнаете много нового))
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16827 / 5248 / 321
Регистрация: 30.03.2009
Сообщений: 14,129
Записей в блоге: 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++ Необработанное исключение в "0x776315de" в "c++1.exe": 0xC0000005: Нарушение прав доступа при записи "0x40e000
На C++ в строке после символа - "+" поставить символ "*" и посчитать сколько "+" C++
Из слова "яблоко" путем склеек и вырезок его букв получить слова "блок" и "око" C++

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

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

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