webForumDet fria alternativet

Dev-C++ felmeddelande

2 svar · 401 visningar · startad av orvar

orvarMedlem sedan feb. 2001105 inlägg
#1

Tjena.
Skriver in följande kod i Dev-C++ 4:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
#include <iostream.h>

typedef unsigned short int USHORT;
typedef unsigned long int ULONG;
enum BOOL { FALSE, TRUE};
enum CHOICE { DrawRect = 1, GetArea,
GetPerim, ChangeDimension, Quit};
// Klassen Rectangle deklareras
class Rectangle
{
public:
// kontruerare
Rectangle(USHORT width, USHORT height);
~Rectangle();

// åtkomstfunktioner
USHORT GetHeight() const { return itsHeight; }
USHORT GetWidth() const { return itsWidth; }
ULONG GetArea() const { return itsHeight \* itsWidth; }
ULONG GetPerim() const { return 2\*itsHeight + 2\*itsWidth; }
void SetSize(USHORT newWidth, USHORT newHeight);

// Diverse metoder
void DrawShape() const;

private:
USHORT itsWidth;
USHORT itsHeight;
};

// Implementationer av klassmetoder
void Rectangle::SetSize(USHORT newWidth, USHORT newHeight)
{
itsWidth = newWidth;
itsHeight = newHeight;
}

Rectangle::Rectangle(USHORT width, USHORT height)
{
itsWidth = width;
itsHeight = height;
}

Rectangle::~Rectangle() {}

USHORT DoMenu();
void DoDrawRect(Rectangle);
void DoGetArea(Rectangle);
void DoGetPerim(Rectangle);

void Main()
{
// initiera en rektangel till värdet 10,20
Rectangle theRect(30,5);

USHORT choice = DrawRect;
USHORT fQuit = FALSE;

while (!Quit)
{
choice = DoMenu();
if (choice < DrawRect || choice > Quit)
{
cout << "\nOgiltigt alternativ, gör ett nytt val.\n\n";
continue;
}
switch (choice)
{
case DrawRect:
DoDrawRect(theRect);
break;
case GetArea:
DoGetArea(theRect);
break;
case GetPerim:
DoGetPerim(theRect);
break;
case ChangeDimension:
USHORT newLength, newWidth;
cout << "\nNy bredd: " ;
cin >> newWidth;
cout << "\nNy höjd: " ;
cin >> newLength;
theRect.SetSize(newWidth, newLength);
DoDrawRect(theRect);
break;
case Quit:
fQuit = TRUE;
cout << "\nAvslutar programmet...\n\n";
break;
default:
cout << "\nFelaktigt val!\n";
fQuit = TRUE;
break;
} // slut på switch-satesen
} // slut på while
} // slut på main

USHORT DoMenu()
{
USHORT choice;
cout << "\n\n *** Meny *** \n";
cout << "(1) Rita en rektangel\n";
cout << "(2) Yta\n";
cout << "(3) Omkrets\n";
cout << "(4) Ändra storlek\n";
cout << "(5) Avsluta\n";

cin >> choice;
return choice;
}

void DoDrawRect(Rectangle theRect)
{
USHORT height = theRect.GetHeight();
USHORT width = theRect.GetWidth();

for (USHORT i = 0; i<height; i++)
{
for (USHORT j = 0; j<width; j++)
cout << "*";
cout << "\n";
}
}

void DoGetArea(Rectangle theRect)
{
cout << "Yta: " << theRect.GetArea() << endl;
}

void DoGetPerim(Rectangle theRect)
{
cout << "Omkrets: " << theRect.GetPerim() << endl;
}

Får inga kompileringsfel men en ny ruta med titeln "Compiler and linker output" kommer fram där det står:

C:\CPLUSP~2\LIB\\libmingw32.a(main.o)(.text+0x8e): undefined reference to `WinMain@16'

Det skapas heller ingen .exe fil som jag kan köra.
Lösning någon?

------------------
Musiken var människans, störningarna naturens...

[Redigerat av orvar den 25 sep 2001]

ChainsawMedlem sedan sep. 20001 124 inlägg
#2

Felet är raden "void Main()" som är fel. Det finns main() och WinMain() men absolut inte Main(). I det här fallet vill kompilatorn ha WinMain().

------------------
Hollowhead - levererar din dagliga dos av nyttig hårdrock!

PeWMedlem sedan juni 200010 432 inlägg
#3

Verkar som om du försöker peta in 32 bitars kod i ett 16 bitars skal. Kolla upp hur projektet är konfat under "options" eller nåt.

r:
Sågen hade ett bättre svar ;)

------------------
Ancilla, face mea laganum!

[Redigerat av PeW den 25 sep 2001]

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)