Форум: Форум C++Разное
Новые темы: 00
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: что хранится в .h файлах?
 
 автор: DEM   (05.01.2007 в 17:23)   письмо автору
 
 

САБЖ и еще раз САБЖ... просто на ум приходят только переменные и константы...

  Ответить  
 
 автор: Евгений Петров   (05.01.2007 в 17:30)   письмо автору
 
   для: DEM   (05.01.2007 в 17:23)
 

В .h файлах как правило хранят описание классов, в том числе и обьявление констант. Саму реализацию выносят в .cpp

  Ответить  
 
 автор: cheops   (05.01.2007 в 17:32)   письмо автору
 
   для: DEM   (05.01.2007 в 17:23)
 

Например, определение класса, прототипы функций, пользовательские типы... вообще всё, что может потребоваться стороннему разработчику. Дело в том, что когда создаётся библиотека, она зачастую распространяется в бинарном виде, а заголовочный файл (.h) в текстовом - по заголовочному файлу внешний программист ориентируется, что имеется в библиотеке, какие методы содержит класс, что можно выжать из библиотеки. Заголовочный файл содержит все вспомогательные определения, включив такой файл в свою программу, разработчик может сразу использовать библиотеку.

Т.е. заголовочный файл, как правило, содержит открытый интерфейс, а cpp файл - закрытую часть, то, что должно быть инкапсулировано (скрыто от чужих глаз).

  Ответить  
 
 автор: nibiru20   (11.01.2007 в 07:03)   письмо автору
 
   для: cheops   (05.01.2007 в 17:32)
 

Я самый-самый новичок (в смысле программирования на C++).
Учусь сейчас только на примерах. Достал вот недавно перед этим Borland C++ 4.5
И вот попалась мне одна из таких задач, демонстрирующая работу с файлами с использованием файлов *.c и *.h Расписано в книге всё чётко, с моей стороны ошибок нет (так как только копировал). И сейчас даже не втыкаю, в чём траблы. Объясните кто-нибудь, если код выложу, непонимающему начинающему?

  Ответить  
 
 автор: cheops   (11.01.2007 в 14:33)   письмо автору
 
   для: nibiru20   (11.01.2007 в 07:03)
 

Вы в консоли компилируете или в интегрированной среде? Вообще консольный Borland славен тем, что сам не подцепляет заголовочные файлы - нужно хитрый makefile писать. Выложите ваш код пожалуйста (если он объёмный - прикрепите его в виде архива к форуму).

  Ответить  
 
 автор: nibiru20   (12.01.2007 в 15:58)   письмо автору
6.8 Кб
 
   для: cheops   (11.01.2007 в 14:33)
 

Только предупреждаю сразу: текста много.

Посмотрите, кому не лень. В архиве присутствуют заголовочный и прикрепляемые файлы вместе с описанием под незатейливым названием "READ ME!"

Меня интересует: это ошибки моего компилятора (не та версия, какая надо) или же это просто некие затупы как мои, так и в самом исходном коде. Спасибо.

  Ответить  
 
 автор: cheops   (12.01.2007 в 22:07)   письмо автору
 
   для: nibiru20   (12.01.2007 в 15:58)
 

Заголовочный файл my.h следует включить во все с-файлы при помощи конструкции
#include "my.h"

иначе вы не сможете создать объектный код c-файлов. Компилятор в этом случае будет ругаться на то, что происходит попытка объвить несколько раз одни и те же переменные. Обойти это можно изменив файл my.h, все его содержимое следует поместить в блок
#ifndef MyH
#define MyH
Здесь содержимое файла my.h
#endif

  Ответить  
 
 автор: Евгений Петров   (13.01.2007 в 14:14)   письмо автору
 
   для: cheops   (12.01.2007 в 22:07)
 

Или можно вместо этого блока написать:
#pragma once

  Ответить  
 
 автор: nibiru20   (13.01.2007 в 14:17)   письмо автору
 
   для: cheops   (12.01.2007 в 22:07)
 

Сделал всё как сказали.
Теперь ошибок гораздо меньше (5) - с учётом того, что их вообще не должно было быть, - следующего содержания:

Выдаю прямо как в окне Message:

Compiling TELEPHON.CPP:
Error FINDT.C 31: Unterminated string or character constant in function Find(char *)

***При нажатии View source всплывает следующая строка подключаемого файла FINDT.C:
fprintf(stderr, "%s : ошибка чтения\n'', File); //объясните, что она означает
Error FINDT.C 32: Function call missing ) in funсtion Find(char *)
***exit(1);
Error ADDT.C 30: Expression syntax in function Add(char *)
***if ((F_tel = fopen(File, "rb+")) = = NULL) //...и вот эта тоже
Error ADDT.C 31: If statement missing ) in funсtion Add(char *)
***Create();
Error ADDT.C 32: Misplaced else in function Add(char *)
***else if (fread(&Count, sizeof(Count), 1, F_tel) != 1)
Warning MY.H 14: Cannot create pre-compiled header: initialized data in header
***char Name[MAX_NAME];

  Ответить  
 
 автор: cheops   (13.01.2007 в 15:32)   письмо автору
 
   для: nibiru20   (13.01.2007 в 14:17)
 

Прикрепите ещё раз архив с тем, что сейчас имеется.

  Ответить  
 
 автор: nibiru20   (14.01.2007 в 18:36)   письмо автору
7.3 Кб
 
   для: cheops   (13.01.2007 в 15:32)
 

Что означают эти две строки?
Error FINDT.C 31: Unterminated string or character constant in function Find(char *)
Error ADDT.C 30: Expression syntax in function Add(char *)

Вот сам архив

  Ответить  
 
 автор: Trianon   (14.01.2007 в 23:05)   письмо автору
 
   для: nibiru20   (14.01.2007 в 18:36)
 

В первой строка закрыта, не кавычкой а двумя апострофами.
Во второй лексема == разорвана пробелом.

  Ответить  
 
 автор: nibiru20   (15.01.2007 в 15:53)   письмо автору
42.3 Кб
 
   для: Trianon   (14.01.2007 в 23:05)
 

Спасибо большое за объяснения. Исправил.
Программа компилируется, но в этот раз (не знаю, может так и должно быть) в окне всплывает лишь единственное сообщение: "Ошибочное число аргументов".
На всякий случай прикрепил архив.

  Ответить  
 
 автор: Trianon   (17.01.2007 в 18:28)   письмо автору
 
   для: nibiru20   (15.01.2007 в 15:53)
 

А что, по Вашему, программа должна выводить?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования