Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Declaration syntax error


Автор: Nikita_85 27.7.2007, 09:48
Здравствуйте! 
Я только начинаю изучать С++ и столкнулся с проблемой. Прочитал раздел в учебнике про функции, попытался написать простенькую программу с функцией, но компилятор выдает Declaration syntax error. Объясните, пожалуйста, в чем ошибка? 


#pragma resource "*.dfm" 
TForm1 *Form1; 
//--------------------------------------------------------------------------- 
__fastcall TForm1::TForm1(TComponent* Owner) 
: TForm(Owner) 
{ 
int slozenie(int, int); 

void main(void) 
{                                                 // E2141 Declaration syntax error 
int a = 10; 
int b = 20; 
int summa; 

slozenie(&a, &b); 
&summa; 
} 


int slozenie(int *first, int *second) 
{ 
int *summa; 
*summa = *first + *second; 
return *summa; 
}; 

} 


ЗЫ Пользуюсь C++ Builder 6.0

Автор: Любитель 27.7.2007, 09:51
Ну дык правильно. Почему у тебя внутри конструктора формы какие-то функции появились?

А вообше - бросай лучше билдер (надеюсь обойдёмя без холиваров smile ).

Автор: Nikita_85 27.7.2007, 09:53
а каким образом в Билдере сделать эту программку?

Автор: Любитель 27.7.2007, 09:55
Что-то типа File -> New -> Other -> Console Application.

Автор: Nikita_85 27.7.2007, 09:57
а именно в этой форме? в Application?

Автор: Любитель 27.7.2007, 10:02
Ну вынеси функции за пределы конструктора + что это такое:
Код

&summa; 


Да и прототип функции slozhenie у тебя принимает инты, а сама функция почему-то указатели на инты... Вообщем читай внимательней учебник. Или другой возьми, если там непонятно smile

Автор: _hunter 27.7.2007, 10:06
как-то так:
Код

#pragma resource "*.dfm" 
TForm1 *Form1; 

int slozenie(int, int); 

//--------------------------------------------------------------------------- 
__fastcall TForm1::TForm1(TComponent* Owner) 
: TForm(Owner) 
{ 
    int a = 10; 
    int b = 20; 
    int summa; 

    summa = slozenie(&a, &b); 
    //&summa; -- в чем смысл -- хз.
} 


int slozenie(int first, int second) 
{ 
    //int *summa; опять бред какой-то
    int summa = first + second; 
    return summa; 
}; 

а вообще: почитай книжку еще немного...

Автор: FiMa1 27.7.2007, 10:09
Любитель, насколько я понимаю Nikita_85 не знает пока что такое конструктор, он еще только начинает программировать на Си++. Кроме того, под фразой "а каким образом в Билдере сделать эту программку?" он, видимо, вопрошал как в данном контексте (в оконном варианте приложения с использованием VCL) использовать его фунцию. Можно, к примеру, так:
Код
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int sum(int first, int second);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
int sum(int first, int second)
{
    int summa = first + second;
    return summa;
    // или так
    //return first + second;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    Form1->Caption = sum(1, 2);
}
//---------------------------------------------------------------------------

Nikita_85, зачем ты используешь указатели? Я не уверен, что ты четко их понимаешь... 
Nikita_85, Любитель тебе правильно указал путь - начни с разработки консольных приложений. В Билдере File -> New -> Other -> Console Application
Это позволит тебе развиваться постепенно, и, в дальнейшем, не помешать функцию main внутрь конструктора формы.
Успехов!!!

Автор: Nikita_85 27.7.2007, 10:29
Спасибо всем!
Да, я действительно не очень понимаю указатели. Читал в разных учебниках, но эта тема мне трудно дается...

Автор: FiMa1 27.7.2007, 11:06
Так ты это, если чего не понятно, спрашивай. И темку закрой если разрешено  smile .

Автор: archimed7592 27.7.2007, 15:34
Только перед тем как спрашивать почитай вот это:
http://forum.vingrad.ru/index.php?show_type=forum&show_topics_from_subforums=&showtopic=60932&view=all

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)