Luka Rahne
Luka Rahne

Reputation: 10447

Typedef of structs

I am using structs in my project in this way:

typedef struct
{
    int str1_val1;
    int str1_val2;
} struct1;

and

typedef struct
{
    int str2_val1;
    int str2_val2;
    struct1* str2_val3;
} struct2;

Is it possible that I hack this definition in a way, that I would use only types with my code, like

struct2* a;
a = (struct2*) malloc(sizeof(struct2));

without using keyword struct?

Upvotes: 1

Views: 567

Answers (4)

pm100
pm100

Reputation: 50180

as a footnote. If you code in C++ then you don't need to do the typedef; a struct is a type automatically.

Upvotes: 0

salezica
salezica

Reputation: 76929

Just to share, I've seen this approach, and though I personally don't like it (I like everything named and tagged =P and I don't like using variable names in malloc), someone may.

typedef struct {
    ...
} *some_t;

int main() {
    some_t var = (some_t) malloc(sizeof(*var));
}

Upvotes: 0

slashmais
slashmais

Reputation: 7155

Yes, as follows:

struct _struct1
{
...
};
typedef struct _struct1 struct1;

struct _struct2
{
...
};
typedef struct _struct2 struct2;

...

struct2 *a;
a = (struct2*)malloc(sizeof(struct2));

Upvotes: 2

user206545
user206545

Reputation:

Yes, you can use the typedef'ed symbol without needing the struct keyword. The compiler simply uses that name as an alias for the structure you defined earlier.

One note on your example, malloc returns a pointer to memory. Hence your statement should read

a = (struct2 *)malloc(sizeof(struct2));

Upvotes: 0

Related Questions