Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Ondra 22. 05. 2010, 14:04:50

Název: C - ukazatel na promenou typu struktura
Přispěvatel: Ondra 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
Název: Re: C - ukazatel na promenou typu struktura
Přispěvatel: Lemron 22. 05. 2010, 14:16:09
Nepouziva sa pripona cpp pri C++ zdrojakoch?
Název: Re: C - ukazatel na promenou typu struktura
Přispěvatel: Ondra 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++.
Název: Re: C - ukazatel na promenou typu struktura
Přispěvatel: logikk 22. 05. 2010, 15:41:45
Nemělo by tam bejt místo
pokuta *
*pokuta
?
Název: Re: C - ukazatel na promenou typu struktura
Přispěvatel: D.A. Tiger 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.
Název: Re: C - ukazatel na promenou typu struktura
Přispěvatel: hawran diskuse 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 ...
Název: Re: C - ukazatel na promenou typu struktura
Přispěvatel: patrik 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));