| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > HEADER файлы |
| Автор: HELPER 26.4.2005, 13:39 | ||
Народ, хелп!, как написать свой собственный h файл, что б короче потом в инклуде писать:
или хотяб ссылки по теме plz! |
| Автор: Step 26.4.2005, 14:25 | ||||
| хедер содержит перечень объектов и объявления функций например my.h
а теперь my.cpp
|
| Автор: pablo 26.4.2005, 14:53 |
| Во первых если пишеш свои заголовочные файлы, то надо(желательно) их вксючать не <myheader.h> а "myheader.h", а делаются они так: #ifndef MYHEADER_H #define MYHEADER_H Ну а тут пишеш чё душе угодно(прототипы функций, объябления класса(ов)) и сохраняеш его как *.h #endif Потом создаёш файл с таким же названием только расширение *.cpp пишешь #icnlude "myheader.h", ну и описывай что там(*.h) наопределял Добавлено @ 14:55 Кстати описываниефайлов без директив препроцессора, считается плохим тоном программирования, т.к незащищает от повторного включения файлов в программу. |
| Автор: maxim1000 26.4.2005, 15:23 | ||||
а вот так писать очень нехорошо #include'ом монжо подключать любую информацию, чтобы не писать ее в каждом файле однако, есть соглашение, что при написании модуля программы пишется так же h-файл, который сообщает перечень объектов в модуле поэтому все, что написано в h-файле должно (конечно, никто не запрещает, но очень рекомендуется) носить чисто декларативный характер это означает: 1. макросы 2. объявления функций (с ; вместо тела) 3. типы там всякие (в том числе и классы) 4. объявления глобальных переменных, т.е. что-то вроде этого
как только в h-файле будет описано создание какого-то объекта (переменная без extern или функция с {...}), это будет означать, что этот объект будет создан в каждом модуле, который подключил этот h-файл, заново, что может привести либо к конфликтам имен при линковании, либо к некорректной работе потом (когда в рзаных файлах под переменной a будут пониматься разные ячейки памяти) |
| Автор: En_t_end 26.4.2005, 16:28 |
| Кстати давно хотел спросить... Что конкретно обозначает макрокоманда #pragma once ? |
| Автор: chipset 26.4.2005, 16:38 | ||
Создай файл .h и добавь в проект
То что хидер будет пропарсен только один раз, если не ошибаюсь. |
| Автор: Alastis 26.4.2005, 17:19 | ||
это альтернатива комбинации #ifndef #define ... #endif для майкрософтовских компиляторов |
| Автор: AISIN 26.4.2005, 17:35 |
| pablo тут надо уточнить если файл в одном коталоге что и компилируемый файл .*сpp то пишем #include" myheader.h",а если в разных то #include "c:\labmyheader.h",т.е. нужно полный путь прописывать! |
| Автор: pablo 27.4.2005, 16:14 |
| Конечно, но если его к стандарным файлалм запихнуть то можно и #include <myfile.h> прописать |
| Автор: AISIN 27.4.2005, 17:56 |
| pablo Обсалютно с тобой согласен! |
| Автор: Just_Girl 10.10.2007, 14:17 | ||
| Привет, у меня вопрос по поводу header files. Please help кто может! Вот код моего header fila: Bank.h
Как провести инициализацию saldo в Bank.h, чтобы использовать его в других файлах? Или мне ет надо делать не в Bank.h, а в Bank.c??? |
| Автор: maxim1000 10.10.2007, 20:43 |
| struct_Rekening - тип данных, т.е. в программе могут быть несколько переменных такого типа, у каждой будет поле saldo так что возникает вопрос: о каком именно saldo идёт речь? P.S. ещё вопрос: C или C++? |
| Автор: Daevaorn 10.10.2007, 20:49 | ||
скорей всего надо раскрыть тему extern |
| Автор: Just_Girl 11.10.2007, 10:03 | ||
| Речь идёт не о C++, а о C. Мне надо синициализировать saldo, например saldo = 200, чтобы с другово файла смочь его употребить. Например: bank_automaat.c
Но глобальная инитиализация saldo не получается, поетому может ет можно в structe как-то сделать??? И ещё один вопрос, какую роль играют extern, static и void в C? Когда что употреблять? |
| Автор: JackYF 11.10.2007, 14:28 | ||||
а не вопрос, это целая глава хороших книг по С/С++, кои и советую почитать на досуге, много вопросов прояснится. угу. В одном файле делаешь так: в остальных для использования делаешь
и затем можешь обращаться в переменной. В .h-файле ничего лишнего не прописывай, только объявление структуры, как и было. |
| Автор: Just_Girl 11.10.2007, 15:28 |
| Времени нет книг читать, я на стажировке, всё надо делать быстро. hmm ясно, ну в таком случае ещё малюсенький вопросик |
| Автор: zkv 11.10.2007, 15:40 | ||||
тыщу второй раз повторю в одном из срр-файлов определяем (только один раз!):
там где нужно использовать объявляем (можно дублировать сколько угодно раз):
можно это объявление запихать в подходящий хедер, тогда оно будет инклудиться с его подключением. |
| Автор: Just_Girl 11.10.2007, 15:40 | ||
Да кстати переменная saldo так инитиализироватй нельзя. :( Можно только в функции. Например:
Тоесть глобально инитиализировать не виходит. Добавлено через 3 минуты и 23 секунды Говорю во второй раз, Работаю не с "C++", а с "C". Поэтому не имею дело с файлами cpp. |
| Автор: zkv 11.10.2007, 15:44 |
все можно Rekening rek = {200}; или можно конструктор нарисовать, чтоб посимпатичнее смотрелось. Вообщем читайте книги |
| Автор: Just_Girl 11.10.2007, 15:47 |
| Слуш, ты наверно не понимаешь! Я ет всё уже пробовала, ато просто так не написала бы на форуме. Так тож не выходит: Rekening rek = {200}; Странно всё это, я кстати работаю в Metrowerks CodeWarrior. Добавлено через 43 секунды Может ет от этого? :( |
| Автор: zkv 11.10.2007, 16:01 | ||
сорри... но суть не меняется, вместо cpp-файлов с расширением c.
|
| Автор: Just_Girl 11.10.2007, 16:10 |
| Слуш сработало, ты супер!!! |