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

Почему нельзя компилировать отдельный заголовочный файл? - C++

Восстановить пароль Регистрация
 
Alex Z
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
12.08.2012, 11:57     Почему нельзя компилировать отдельный заголовочный файл? #1
Вообще можно весь код поместить в один .cpp файл. Но, как я понимаю, люди советуют все функции помещать в отдельные заголовочные файлы. А потом эти заголовочные файлы подключать директивой #include в основной файл .cpp. Хотя я не понимаю, чем это лучше то? Не вижу преимуществ. Не так давно задал этот вопрос своему шефу. Но только он задачи решает не на С++ как я, а на Фортране. Для Фортрана у него какая-то среда разработки аналогичная Visual Studio 2010. Так он взял и открыл какой-то проект, а потом открыл отдельный заголовочный файл в нём (содержащий какую-то функцию) и нажал на компиляцию. Так-то это на самом деле довольно удобно получается, если можно компилировать и, соответственно, искать ошибки в каждом отдельном файле проекта. Но почему в Студии для С++ так нельзя? (это и есть мой вопрос к Вам). Я открываю любой заголовочный файл, захожу в пункт меню Построение, а подпункт Компилировать затемнён. То есть компилировать получается только основной файл .cpp. Короче, я так понял, что заниматься численными методами действительно лучше на Фортране. Но при этом в Студии в окне ошибок пишут в каком именно файле проекта и в какой строчке там ошибка.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2012, 11:57     Почему нельзя компилировать отдельный заголовочный файл?
Посмотрите здесь:

Заголовочный файл .h C++
C++ Заголовочный файл
C++ Заголовочный файл
C++ Почему Не Определён Ctrcmp, тема про заголовочный файл string.h
Заголовочный файл C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
canopen
411 / 410 / 12
Регистрация: 16.07.2012
Сообщений: 886
12.08.2012, 12:05     Почему нельзя компилировать отдельный заголовочный файл? #2
Советуют не сами функции помещать в заголовочный файл, а их объявления.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
12.08.2012, 12:24     Почему нельзя компилировать отдельный заголовочный файл? #3
canopen,

Не по теме:

как по мне, лучше закинуть функции в некий array.h, чем делать два файла типа : array.h (прототипы) и array.cpp (сами функции). Меньше мороки, ведь не надо в обоих файлах менять объявления, если вдруг добавил фактический параметр.

fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
12.08.2012, 12:29     Почему нельзя компилировать отдельный заголовочный файл? #4
nexen, когда узнаешь про раздельную компиляцию и зачем она нужна, возвращайся.
canopen
411 / 410 / 12
Регистрация: 16.07.2012
Сообщений: 886
12.08.2012, 12:33     Почему нельзя компилировать отдельный заголовочный файл? #5
Цитата Сообщение от fasked Посмотреть сообщение
nexen, когда узнаешь про раздельную компиляцию и зачем она нужна, возвращайся.
Ну кстати отсутствие модулей в C++ - это один из главных его недостатков. Кстати вот здесь про проблемы C++ очень хорошо и подробно написано.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
12.08.2012, 13:01     Почему нельзя компилировать отдельный заголовочный файл? #6
компилятор обрабатывает translation unit-ы, а это source файл + хидеры. т.е. хидеры сами по себе еденицей трансляции не являются и не компилируются.
В студии есть возможность компиляции одного файла (сорца) из текущей вкладки (Ctrl-F7). По идее совсем не сложно и возможно в других IDE даже есть возможность проверять именно хидеры. Для этого IDE должна была бы сгенерить временный почти нустой спп файл в включенным инклудником, который хотят проверить и скомпилировать его. После этого удалить. В студии это наверно можно сделать кастомными командами.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2012, 16:02     Почему нельзя компилировать отдельный заголовочный файл?
Еще ссылки по теме:

Заголовочный файл C++
Зачем нужен h-файл? Почему нельзя все хранить в cpp? C++
C++ Заголовочный файл

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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
14.08.2012, 16:02     Почему нельзя компилировать отдельный заголовочный файл? #7
Цитата Сообщение от canopen Посмотреть сообщение
Ну кстати отсутствие модулей в C++ - это один из главных его недостатков. Кстати вот здесь про проблемы C++ очень хорошо и подробно написано.
Почитал. Почти все из разряда "Не осилил".
Цитата Сообщение от DU Посмотреть сообщение
компилятор обрабатывает translation unit-ы, а это source файл + хидеры. т.е. хидеры сами по себе еденицей трансляции не являются и не компилируются.
Это тоже неверно.
Yandex
Объявления
14.08.2012, 16:02     Почему нельзя компилировать отдельный заголовочный файл?
Ответ Создать тему
Опции темы

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