Powiedzmy mam zapisany kod w c++:
USS_PTR p = new USS;
W c powinno to wyglądać?
USS_PTR p = (USS_PTR) malloc (sizeof(USS));
Dobrze to rozumiem ?
Powiedzmy mam zapisany kod w c++:
USS_PTR p = new USS;
W c powinno to wyglądać?
USS_PTR p = (USS_PTR) malloc (sizeof(USS));
Dobrze to rozumiem ?
Tak, o ile USS nie ma konstruktora.
no i w C nie ma obowiązku rzutowania przy malloc
, czyli wystarczy
USS_PTR p = malloc (sizeof(USS));
cóż struktura wygląda tak...
typedef struct slownik
{
struct slownik *t[SIZE];
} USS, *USS_PTR;
Dzięki za informację ... nie wiedziałem iż rzutowanie w C nie jest potrzebne...
Także coś wyczytałem iż niezbyt powinno się korzystać z dyrektyw preprocesora
#define SIZE 29
Jest jakaś inna możliwość zastąpienia ?
W C++ to się odradza użycie #define, zaś w C to jedyna metoda.
tak jak napisal @_13th_Dragon jesli nie ma konstruktora to jest to samo, ale z tego co widze to w strukturze masz wskaznik ktory prawdopodobnie powinien byc zainicjalizowany jakims blokiem pamieci. Wg. mnie najbardziej wiernym odpowiednikiem jest cos takiego:
typedef struct slownik
{
struct slownik *t[SIZE];
} USS, *USS_PTR;
USS_PTR create_USS()
{
USS_PTR uss = malloc(sizeof(USS));
/* tutaj robisz to co bys robil w konstruktorze */
return uss;
}
void free_USS(USS_PTR uss)
{
/* tutaj robisz to co bys robil w destruktorze */
free(uss);
}