Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Зачем нужно писать *.h файлы (http://forum.oszone.net/showthread.php?t=30313)

bilytur 07-09-2003 01:27 208185

Я уже 2 дня как начал осваивать этот великий и могучий язык, но некоторые вещи до меня не доходят.

Допустим я создал несколько функций.
Продублировал их определение в *.h
(Но я очень туп и сразу написать то что надо не могу)
Поэтому решил их изменить. Потом еще и еще...
И каждый раз нужно искать все это в *.h файлах чтобы востановить соответвие.
Когда это проделываешь несколко раз, то возникает мягко говоря легкое раздражение.

Неужели нельзя как то упростить.
Я понимаю что хидер файлы нужны компилятору, линкеру, или еще хрен знает чему, но почему человек то должен набирать два раза одно и тоже?
Где обещанная красота и лаконичность С++?
В конце концов почему не создать небольшую утилиту которая бы парсила *.cpp и автоматом выдирала бы определения в *.h, и затем подавала бы все это вместе компилеру?
Такая утилита имхо не очень сложна в реализации.
И почему такие очевидные вещи не пришли еще кому-то в голову.
Или я чего-то не понимаю? Так объясните...

bgg0408 07-09-2003 01:44 208186

to bilytur
Можно и юез хеадер-файла. Компилятору он НЕ нужен:)
Предположим, Вы пишите прогу из двух С файлов. В одном из них хотите использовать функции другого, но дублировать их описания в обоих файлах влом. Вот здесь может пригодится H-файл. Описываем функцию в этом файле, подключаем к обоис С и кайфуем :)
Прогу для ывдирания писать НЕ надо. Просто надо хеадеры писать :)

[s]Исправлено: bgg0408, 2:45 7-09-2003[/s]

Megabizon 07-09-2003 18:34 208187

Никто тебе не запрещает писать реализацию и объявление в одном файле. Просто это как бы стандарт - разработчиков много и чтобы не было какой-либо путаницы делают так. Здесь эта тема уже обсуждалась, посмотри здесь
http://forum.oszone.net/topic.cgi?fo...&topic=424

[s]Исправлено: Megabizon, 19:35 7-09-2003[/s]

bilytur 08-09-2003 03:24 208188

Не мужики я понял что декларации нужны. В одном ли файле или в разных сути это не меняет. Я не понял зачем вообще их нужно писать. Вернее почему это нужно делать вручную.

Еше раз вкратце, идея такая,  допустим есть файл:

>---------file.cpp
#include "file.h"
int main(){
//...
func1(a,b,c);
func2(a,b,c,);
func3(a,b,c);
}

void  func1(int a , int b, int c){
//...
}
void  func2(int a , int b, int c){
//...
}
void  func3(int a , int b, int c){
//...
}
<---------eof

Запускаем нашу утилитку например так:
cpp2h   *.cpp   *.h

Получаем:
>---------file.h
int main();
void func1(int a , int b, int c);
void func2(int a , int b, int c);
void func3(int a , int b, int c);
<---------eof
Кстати строчку #include "file.h" можно добавлять куда угодно как обычно.

После этого ты вдруг понял что func1() должна возвращать значение, у func2() должно быть 4 аргумента, func3() вобще не нужна, а нужны func7() и func8()
ok. Изменяешь только один раз один файл: file.cpp и ВСЕ!

А если нашу утилитку запускать автоматически каждый раз перед компиляцией то можно кайфовать вобще всю оставшуюся жизнь. :)

зы: На этапе разработки это дело бы имхо сильно упростило бы написание. Ну а если дело дойдет до продажи *.obj. Там можно и вручную подкоректировать h-файлы. Вставить копирайты там и.т.д.

зызы: Возможно здесь закралась какя-то  ошибка?
зызызы: А может уже давно кто-то написал что-то подобное?


Время: 12:11.

Время: 12:11.
© OSzone.net 2001-