/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
Bech_bb 500
kyllekylle 500
jdjespers.. 500
gibson 300
scootergr.. 300
molokyle 287
10  strarup 270
struct, typedef, malloc(), etc.
Fra : Thomas L. Christense~


Dato : 17-01-06 14:47

Hej

Jeg prøver at lave et program til min gamle 386'er, så jeg har fundet
Borlands Turbo C++ 3.0 frem. Jeg følgende kode:

#include <conio.h>
#include <alloc.h>

typedef struct {
   int type;
   char navn[32];
}felt;

felt *p_felter;

int numFelter = 3;

p_felter = (felt *) malloc(numFelter * sizeof(felt));

int main (void) {

/* snip */

}

- og så får jeg 3 errors med relation til malloc linien:

Type name expected
Type mismatch in redeclaration of 'p_felter'
Illegal initialization

- og jeg fatter ikke en bønne. 'felt' er jo defineret til at være en
type, så hvorfor bliver det ikke opfattet sådan i typecast'en af
malloc()?

Er det Turbo C++ der er sat forkert op? Eller hvad er der galt?

Med venlig hilsen

Thomas

 
 
Bertel Lund Hansen (17-01-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 17-01-06 15:23

Thomas L. Christensen skrev:

> Borlands Turbo C++ 3.0 frem. Jeg følgende kode:

> #include <conio.h>
> #include <alloc.h>
>
> typedef struct {
>    int type;
>    char navn[32];
> }felt;

> felt *p_felter;

> int numFelter = 3;

> p_felter = (felt *) malloc(numFelter * sizeof(felt));

> int main (void) {
> }

> - og så får jeg 3 errors med relation til malloc linien:

Det skal du også. Mallokeringen kan ikke foregå som en
initialisering, men skal ske i den 'aktive' kodedel. Derudover er
*felt ikke en lovlig type. Det skal være felt*:

#include <conio.h>
#include <alloc.h>

typedef struct felt {
   int type;
   char navn[32];
} felt;

int numFelter = 3;

felt *p_felter;

int main (void) {
   p_felter = (felt *) malloc(numFelter * sizeof(felt));

   return 0;
}

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Thomas L. Christense~ (17-01-2006)
Kommentar
Fra : Thomas L. Christense~


Dato : 17-01-06 16:10

On Tue, 17 Jan 2006 15:23:01 +0100, Bertel Lund Hansen
<nospamfilius@lundhansen.dk> wrote:

>Thomas L. Christensen skrev:
>> - og så får jeg 3 errors med relation til malloc linien:
>
>Det skal du også. Mallokeringen kan ikke foregå som en
>initialisering, men skal ske i den 'aktive' kodedel.

Nope. Jeg har opdaget det. Det er sgu' længe siden jeg har kodet...


>Derudover er
>*felt ikke en lovlig type. Det skal være felt*:

Har du ikke læst forkert? Jeg har da ikke skrevet *felt ... (?)

Anyway, tak for dit svar. Jeg kommer nok til at spørge et par gange
til, jeg synes det her C virker lidt langt væk...

--
Thomas

Bertel Lund Hansen (17-01-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 17-01-06 16:29

Thomas L. Christensen skrev:

> Har du ikke læst forkert? Jeg har da ikke skrevet *felt ... (?)

Jo, jeg lavede en fejl.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Benny Andersen (17-01-2006)
Kommentar
Fra : Benny Andersen


Dato : 17-01-06 16:23

On Tue, 17 Jan 2006 14:47:10 +0100, Thomas L. Christensen wrote:

> Hej
>
> Jeg prøver at lave et program til min gamle 386'er, så jeg har fundet
> Borlands Turbo C++ 3.0 frem. Jeg følgende kode:
>
> #include <conio.h>
> #include <alloc.h>
>
> typedef struct {
>    int type;
>    char navn[32];
> }felt;
>
> felt *p_felter;
>
> int numFelter = 3;
>
> p_felter = (felt *) malloc(numFelter * sizeof(felt));

Man kan ikke tildele udenfor funktioner, men initialisere samtidig med
deklarering.

Int numFelter=3;
felt *p_felter = (felt*)malloc(numFelter * sizeof(felt));
--
Mvh
Benny Andersen

Søg
Reklame
Statistik
Spørgsmål : 177428
Tips : 31962
Nyheder : 719565
Indlæg : 6407943
Brugere : 218877

Månedens bedste
Årets bedste
Sidste års bedste