C - ukazatel na promenou typu struktura

Ondra

C - ukazatel na promenou typu struktura
« kdy: 22. 05. 2010, 14:04:50 »
Mám pole ukazatelů ( zaznamy[...])na promenou typu  struktura (pokuta) a potřeuju do něj zapsat ukazatel na nově vytvořený záznam. Problém je že v gcc to jde zkompilovat ale ve MS Visual studio hlásí errory. Nevíte v čem je problém ?

zaznamy[pocet]=(pokuta *) malloc(sizeof(pokuta));

Error   1   error C2059: syntax error : ')'   c:\users\a\documents\visual studio 2008\projects\p1\p1\lib.cpp   35   p1


Lemron

Re: C - ukazatel na promenou typu struktura
« Odpověď #1 kdy: 22. 05. 2010, 14:16:09 »
Nepouziva sa pripona cpp pri C++ zdrojakoch?

Ondra

Re: C - ukazatel na promenou typu struktura
« Odpověď #2 kdy: 22. 05. 2010, 15:11:16 »
Nepouziva sa pripona cpp pri C++ zdrojakoch?

Nevím ale mám tam ve vlastnostech nastaveno kompilovat jako C a ne C++.

logikk

Re: C - ukazatel na promenou typu struktura
« Odpověď #3 kdy: 22. 05. 2010, 15:41:45 »
Nemělo by tam bejt místo
pokuta *
*pokuta
?

D.A. Tiger

  • ****
  • 486
  • Tygr, který žere tučňáka ;-)
    • Zobrazit profil
    • E-mail
Re: C - ukazatel na promenou typu struktura
« Odpověď #4 kdy: 22. 05. 2010, 17:22:54 »
Nemělo by tam bejt místo
pokuta *
*pokuta
?

pokud jsem to pochopil z toho mála, tak je to správně - jde o přetypování z ukazatele typu void na ukazatel typu pokuta. Kdyby tam bylo *pokuta, pak by to přímo ukazatel. jenže bez typu a hodnoty. navíc by ten kód asi neměl ani potom smysl.

Zkusil bych udělat mezery mezi operátorem '=' a zbytkem textu. jestli to Vis. C++ bere jako kód v C++, můžou občas podobné věci dělat trochu problémy. Jinak by bylo lepší kdyby jsi
sem vložil toho kódu víc, protože syntaktické chyby se mohou při překladu objevit jinde, než kde k ní ve skutečnosti došlo.


Re: C - ukazatel na promenou typu struktura
« Odpověď #5 kdy: 22. 05. 2010, 17:47:49 »
Předpokládám, že vyžužlal studio se po nastavení "aby překládalo jako c" skutečně chová tak, že dodržuje normu pro c.

Dále předpokládám, že tu strukturu pokuta máš deklarovanou nějak takto:
Kód: [Vybrat]
struct pokuta {
  ...
};

Pak bys asi měl asi tu funkci malloc volat nějak takto:
Kód: [Vybrat]
zaznamy[pocet] = (struct pokuta*) malloc(sizeof(struct pokuta));

ps: a doporučoval bych pro soubory s kódem v c používat příponu .c a pro kód s c++ příponu .cpp ...

patrik

Re: C - ukazatel na promenou typu struktura
« Odpověď #6 kdy: 24. 05. 2010, 09:09:57 »
typedef struct
{
   char name[21];
   char city[21];
   char state[3];
} Rec;
typedef Rec *RecPointer;

RecPointer r;
r = (RecPointer)malloc(sizeof(Rec));