Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HEADER файлы, Как написать? 
:(
    Опции темы
HELPER
  Дата 26.4.2005, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 18.4.2005

Репутация: -2
Всего: -2



Народ, хелп!, как написать свой собственный h файл, что б короче потом в инклуде писать:

Код

#include <myHEADER.h>


или хотяб ссылки по теме plz!
PM MAIL   Вверх
Step
Дата 26.4.2005, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



хедер содержит перечень объектов и объявления функций


например my.h

Код

int a;
int b;
int c;


int xxx(int a1,int a2,int a3);


а теперь

my.cpp
Код

int xxx(int a1,int a2,int a3){
return a1*a2+a3;
}

и получил уравнение кривой с целочисленным результатотм




--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
pablo
Дата 26.4.2005, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

Репутация: 4
Всего: 6



Во первых если пишеш свои заголовочные файлы, то надо(желательно) их вксючать не <myheader.h> а "myheader.h", а делаются они так:

#ifndef MYHEADER_H
#define MYHEADER_H

Ну а тут пишеш чё душе угодно(прототипы функций, объябления класса(ов)) и сохраняеш его как *.h

#endif

Потом создаёш файл с таким же названием только расширение *.cpp пишешь #icnlude "myheader.h", ну и описывай что там(*.h) наопределял


Добавлено @ 14:55
Кстати описываниефайлов без директив препроцессора, считается плохим тоном программирования, т.к незащищает от повторного включения файлов в программу.


--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
maxim1000
Дата 26.4.2005, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



Цитата(Step @ 26.4.2005, 12:25)
int a;
int b;
int c;

а вот так писать очень нехорошо
#include'ом монжо подключать любую информацию, чтобы не писать ее в каждом файле
однако, есть соглашение, что при написании модуля программы пишется так же h-файл, который сообщает перечень объектов в модуле
поэтому все, что написано в h-файле должно (конечно, никто не запрещает, но очень рекомендуется) носить чисто декларативный характер
это означает:
1. макросы
2. объявления функций (с ; вместо тела)
3. типы там всякие (в том числе и классы)
4. объявления глобальных переменных, т.е. что-то вроде этого
Код

extern int a;

как только в h-файле будет описано создание какого-то объекта (переменная без extern или функция с {...}), это будет означать, что этот объект будет создан в каждом модуле, который подключил этот h-файл, заново, что может привести либо к конфликтам имен при линковании, либо к некорректной работе потом (когда в рзаных файлах под переменной a будут пониматься разные ячейки памяти)


--------------------
qqq
PM WWW   Вверх
En_t_end
Дата 26.4.2005, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Кстати давно хотел спросить...
Что конкретно обозначает макрокоманда #pragma once ?
PM MAIL ICQ Skype GTalk Jabber   Вверх
chipset
Дата 26.4.2005, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Создай файл .h и добавь в проект smile
Цитата(En_t_end @ 26.4.2005, 06:28)
Что конкретно обозначает макрокоманда #pragma once ?

То что хидер будет пропарсен только один раз, если не ошибаюсь.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Alastis
Дата 26.4.2005, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 15.11.2004
Где: Казахстан, Астана

Репутация: 4
Всего: 10



Цитата(En_t_end @ 26.4.2005, 16:28)
Что конкретно обозначает макрокоманда #pragma once ?

это альтернатива комбинации #ifndef #define ... #endif для майкрософтовских компиляторов


--------------------
Прости, что я говорю, когда ты меня перебиваешь.
PM MAIL WWW ICQ   Вверх
AISIN
Дата 26.4.2005, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 27.1.2005
Где: Пушкино

Репутация: нет
Всего: 1



pablo тут надо уточнить если файл в одном коталоге что и компилируемый файл .*сpp то пишем #include" myheader.h",а если в разных то #include "c:\labmyheader.h",т.е. нужно полный путь прописывать!
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002%
PM MAIL   Вверх
pablo
Дата 27.4.2005, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 12.2.2005
Где: Вильнюс, Литва

Репутация: 4
Всего: 6



Конечно, но если его к стандарным файлалм запихнуть то можно и #include <myfile.h> прописать


--------------------
Первый блин всегда похож на сферу, иногда бывает и куб.
PM MAIL ICQ   Вверх
AISIN
Дата 27.4.2005, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 27.1.2005
Где: Пушкино

Репутация: нет
Всего: 1



pablo Обсалютно с тобой согласен!

Это сообщение отредактировал(а) AISIN - 27.4.2005, 17:59
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002%
PM MAIL   Вверх
Just_Girl
Дата 10.10.2007, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 6.8.2007

Репутация: нет
Всего: нет



Привет, у меня вопрос по поводу header files. Please help кто может! smile  Пишу програмку про Банк. 
Вот код моего header fila:

Bank.h
Код

#ifndef _BANK_H // if not defined
#define _BANK_H // define MyHeader

#include <engine.h>


typedef struct
{
    u8 saldo;

}struct_Rekening;


#endif // end if not defined, and end the header file


Как провести инициализацию saldo в Bank.h, чтобы использовать его в других файлах? Или мне ет надо делать не в Bank.h, а в Bank.c??? smile




PM MAIL   Вверх
JackYF
Дата 10.10.2007, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Just_Girl @  10.10.2007,  14:17 Найти цитируемый пост)
Как провести инициализацию saldo в Bank.h, чтобы использовать его в других файлах? Или мне ет надо делать не в Bank.h, а в Bank.c???

сформулируй нормально требование, я мало что понял из этой строки.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
maxim1000
Дата 10.10.2007, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



struct_Rekening - тип данных, т.е. в программе могут быть несколько переменных такого типа, у каждой будет поле saldo
так что возникает вопрос: о каком именно saldo идёт речь?
P.S.
ещё вопрос: C или C++?


--------------------
qqq
PM WWW   Вверх
Daevaorn
Дата 10.10.2007, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(JackYF @  10.10.2007,  20:18 Найти цитируемый пост)
сформулируй нормально требование, я мало что понял из этой строки. 

скорей всего надо раскрыть тему extern
PM MAIL WWW   Вверх
Just_Girl
Дата 11.10.2007, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 6.8.2007

Репутация: нет
Всего: нет



Речь идёт не о C++, а о C.  Мне надо синициализировать saldo, например saldo = 200, чтобы с другово файла смочь его употребить.
Например: 

bank_automaat.c
Код

Rekening rek;

rek.saldo = 200;

void neemOp(u8 bedrag)
{
    rek.saldo -= bedrag; 
    ConsolePrintf("Uw saldo is nu: %i\n", 4, rek.saldo);
}



Но глобальная инитиализация saldo не получается, поетому может ет можно в  structe как-то сделать??? 
И ещё один вопрос, какую роль играют extern, static и void  в C? Когда что употреблять?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0628 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.