Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2009, 17:38   #11
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

2Blade
Код:
Но, если все же использовать <iostream.h> то включать using namespace std; не нужно и билдер тут не причем
да ладно. чтож тогда ни gcc 4.*.*, ни студия 2005/8 не знают iostream.h?
vvviperrr вне форума Ответить с цитированием
Старый 06.03.2009, 18:58   #12
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Ну у студии какие-то мутные синтаксические/лексические анализаторы, или может они несколько заголовочных файлов только без расширения понимают.

Хотя... может если указать без расширения, то файл грузится не полностью... Ну может из майкрософта чуваки решили замутить такую фичу - типа анализатор кода - подгружает только то, что нужно.
MaTBeu вне форума Ответить с цитированием
Старый 06.03.2009, 20:01   #13
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Такой код
Код:
#include <iostream.h>
int main()
{
    cout << "Test";
    return 0;
}
прекрасно компилируется GCC.
Только выдается предупреждение о том, что рекомендуется использовать <X>, вместо <X.h>. По стандарту именно так и должно быть (использование расширения .h не рекомендуется, но и не запрещается)
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 06.03.2009, 20:54   #14
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

2Blade да, действительно. (я пытался .c файл откомпилить )
vvviperrr вне форума Ответить с цитированием
Старый 07.03.2009, 00:34   #15
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
Сообщение

Сегодня(точнее вчера) попробовал разобрать написанные вами примеры для решения своей проблемы. Компилятор выдал те-же ошибки как и в предыдущем случае:
[C++ Error] Unit1.cpp(5): E2209 Unable to open include file 'structur.h'
[C++ Error] Unit1.cpp(7): E2303 Type name expected
[C++ Error] Unit1.cpp(10): E2451 Undefined symbol 'mailingListRecord'
[C++ Error] Unit1.cpp(10): E2379 Statement missing ;
[C++ Error] Unit1.cpp(15): E2451 Undefined symbol 'listArray'
[C++ Error] Unit1.cpp(16): E2109 Not an allowed type
[C++ Error] Unit1.cpp(16): E2285 Could not find a match for 'istream::getline(undefined,unsigne d int)'
[C++ Error] Unit1.cpp(19): E2109 Not an allowed type
[C++ Error] Unit1.cpp(19): E2285 Could not find a match for 'istream::getline(undefined,unsigne d int)'
[C++ Error] Unit1.cpp(22): E2109 Not an allowed type
[C++ Error] Unit1.cpp(22): E2285 Could not find a match for 'istream::getline(undefined,unsigne d int)'
[C++ Error] Unit1.cpp(25): E2109 Not an allowed type
[C++ Error] Unit1.cpp(25): E2285 Could not find a match for 'istream::getline(undefined,unsigne d int)'
[C++ Error] Unit1.cpp(28): E2109 Not an allowed type
[C++ Error] Unit1.cpp(28): E2285 Could not find a match for 'istream::getline(undefined,unsigne d int)'
[C++ Error] Unit1.cpp(39): E2268 Call to undefined function 'displayRecord'
[C++ Error] Unit1.cpp(48): E2379 Statement missing ;
[C++ Error] Unit1.cpp(51): E2451 Undefined symbol 'temp'
[C++ Error] Unit1.cpp(51): E2268 Call to undefined function 'displayRecord'
[C++ Error] Unit1.cpp(55): E2303 Type name expected

Хм... По моему(я плохо знаю английский) он пишет об необъявленных структурах. Попробовал переписать "исходник" следующим образом:
Код:
#ifndef _STRUCTUR_H
#define _STRUCTUR_H
struct mailingListRecord{
        char firstname[20];
        char lastname[20];
        char address[50];
        char city[20];
        char state[5];
        int zip;
};
#endif
#include<iostream.h>
#pragma hdrstop
#include<conio.h>
#include"structur.h"
void displayRecord(int,mailingListRecord mlRec);
int main(int, char**)
{
        mailingListRecord listArray[3];
        cout<<endl;
        int index=0;
        do{
                cout<<"firstname:";
                cin.getline(listArray[index].firstname,
                sizeof(listArray[index].firstname)-1);
                cout<<"lastname:";
                cin.getline(listArray[index].lastname,
                sizeof(listArray[index].lastname)-1);
                cout<<"address:";
                cin.getline(listArray[index].address,
                sizeof(listArray[index].address)-1);
                cout<<"city:";
                cin.getline(listArray[index].city,
                sizeof(listArray[index].city)-1);
                cout<<"state:";
                cin.getline(listArray[index].state,
                sizeof(listArray[index].state)-1);
                char buff[10];
                cout<<"zip:";
                cin.getline(buff,sizeof(buff)-1);
                listArray[index].zip=atoi(buff);
                index++;
                cout<<endl;
        }
        while(index<3);
        //clrscr();
        for(int i=0;i<3;i++){
                displayRecord(i,listArray[i]);
        }
        cout<<"Shoose a record:";
        char rec;
        do{
                rec=getch();
                rec-= '1';
        }
        while(rec<0||rec>2);
        mailingListRecord temp=listArray[rec];
        //clrscr();
        cout<<endl;
        displayRecord(rec,temp);
        getch();
        return 0;
}
void displayRecord(int num, mailingListRecord mlRec)
{
        cout<<"Record"<<num+1<<":"<<endl;
        cout<<"name:"<<mlRec.firstname<<"";
        cout<<mlRec.lastname;
        cout<<endl;
        cout<<"address:"<<mlRec.address;
        cout<<endl<<"       ";
        cout<<mlRec.city<<",";
        cout<<mlRec.state<<" ";
        cout<<mlRec.zip;
        cout<<endl<<endl;
}
Компилятор выдал одну ошибку(уже прогресс):

[C++ Error] Unit1.cpp(17): E2209 Unable to open include file 'structur.h'
vasek123 вне форума Ответить с цитированием
Старый 07.03.2009, 00:35   #16
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
Сообщение

Хм... Как то странно получается. Сколько не пробовал переписать объявление этой структуры(директиву)- ничего не выходит! Попробовал написать следующим образом:
Код:
#ifndef _STRUCTUR_H
#define _STRUCTUR_H
struct mailingListRecord{
        char firstname[20];
        char lastname[20];
        char address[50];
        char city[20];
        char state[5];
        int zip;
};
#endif
#include<iostream.h>
#pragma hdrstop
#include<conio.h>
void displayRecord(int,mailingListRecord mlRec);
int main(int, char**)
{
        mailingListRecord listArray[3];
        cout<<endl;
        int index=0;
        do{
                cout<<"firstname:";
                cin.getline(listArray[index].firstname,
                sizeof(listArray[index].firstname)-1);
                cout<<"lastname:";
                cin.getline(listArray[index].lastname,
                sizeof(listArray[index].lastname)-1);
                cout<<"address:";
                cin.getline(listArray[index].address,
                sizeof(listArray[index].address)-1);
                cout<<"city:";
                cin.getline(listArray[index].city,
                sizeof(listArray[index].city)-1);
                cout<<"state:";
                cin.getline(listArray[index].state,
                sizeof(listArray[index].state)-1);
                char buff[10];
                cout<<"zip:";
                cin.getline(buff,sizeof(buff)-1);
                listArray[index].zip=atoi(buff);
                index++;
                cout<<endl;
        }
        while(index<3);
        //clrscr();
        for(int i=0;i<3;i++){
                displayRecord(i,listArray[i]);
        }
        cout<<"Shoose a record:";
        char rec;
        do{
                rec=getch();
                rec-= '1';
        }
        while(rec<0||rec>2);
        mailingListRecord temp=listArray[rec];
        //clrscr();
        cout<<endl;
        displayRecord(rec,temp);
        getch();
        return 0;
}
void displayRecord(int num, mailingListRecord mlRec)
{
        cout<<"Record"<<num+1<<":"<<endl;
        cout<<"name:"<<mlRec.firstname<<"";
        cout<<mlRec.lastname;
        cout<<endl;
        cout<<"address:"<<mlRec.address;
        cout<<endl<<"       ";
        cout<<mlRec.city<<",";
        cout<<mlRec.state<<" ";
        cout<<mlRec.zip;
        cout<<endl<<endl;
}
Ура, получилось! Откомпилировал- заработало! Оказывается, при создании консольных(одномодульных) приложений- дополнительное объявление структур не требуется(при создании таким способом)! Интересно, когда писатели подобных книг наконец-то научатся писать без ошибок?

p.s. Очень жаль, что, никто мне так и не смог помочь.
p.s.s Второй раз уже происходит- никто не может дать вразумительный совет. Решаешь данную проблему сам...
vasek123 вне форума Ответить с цитированием
Старый 07.03.2009, 00:41   #17
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

vasek123
Вот этот кусок:
Код:
#ifndef _STRUCTUR_H
#define _STRUCTUR_H
struct mailingListRecord{
        char firstname[20];
        char lastname[20];
        char address[50];
        char city[20];
        char state[5];
        int zip;
};
#endif
Это отдельный файл "structur.h"
Об этом говорит эта строчка:
Код:
#include"structur.h"
А строчка
Код:
[C++ Error] Unit1.cpp(17): E2209 Unable to open include file 'structur.h'
как раз говорит, что компилятор его не находит.

Прикладываю рабочий исходник (..cpp + .h)
Вложения
Тип файла: rar struct.rar (828 байт, 11 просмотров)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 07.03.2009 в 00:44.
Sazary вне форума Ответить с цитированием
Старый 07.03.2009, 00:56   #18
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
Сообщение

Цитата:
vasek123
Вот этот кусок:
Код:
#ifndef _STRUCTUR_H
#define _STRUCTUR_H
struct mailingListRecord{
        char firstname[20];
        char lastname[20];
        char address[50];
        char city[20];
        char state[5];
        int zip;
};
#endif
Это отдельный файл "structur.h"
Об этом говорит эта строчка:
Код:
#include"structur.h"
Это я знаю! Только что, мне теперь поочередно создавать: сначала структуру, затем програму?

Последний раз редактировалось vasek123; 07.03.2009 в 01:14.
vasek123 вне форума Ответить с цитированием
Старый 07.03.2009, 01:08   #19
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Ну, никто не мешает писать структуру в Борланде )

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

То есть, например, имеем проект Project1. И есть класс Class1. Тогда в файл myclass.h нужно записать объявление класса, а в файл myclass.cpp - его описание.
И уже в самой программе Project1 подключать заголовочный файл:
Код:
#include "myclass.h"
Как-то так.

--------------
Цитата:
Это я знаю!
Тогда зачем продолжали пытаться скомпилировать программу, когда этого файла не существовало? При этом его содержимое находилось в основной программе.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 07.03.2009, 01:21   #20
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
Сообщение

Речь шла о консольном приложении а не о GUI! В GUI все ясно и так!
vasek123 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива структур. nec117 Общие вопросы C/C++ 5 22.02.2009 18:01
Массивы структур.СИ под ДОС. Zid@ne Общие вопросы C/C++ 2 12.12.2008 18:16
Динамический массив структур RaZveDchiK Помощь студентам 1 31.08.2008 21:44
diff для структур ag-moscow Общие вопросы C/C++ 2 09.04.2008 02:57