Mno
Mno

Reputation: 281

Usage of "static" within a struct in C

Is it legal to have a "static" member within a C struct?

For example

struct my_struct {
    int x;
    static int y;
};

If indeed it is legal,then what are the implications of the usage of the "static" keyword?

Upvotes: 22

Views: 33169

Answers (6)

Raghu Srikanth Reddy
Raghu Srikanth Reddy

Reputation: 2711

you cannot use the static specifier in a structure...

structure variables cannot be initialized inside a structure and static specifier initializes the variable to 0..

this behavior is not allowed in C..

Upvotes: -2

Jayakrishna
Jayakrishna

Reputation: 1

On compilation Compiler throw error; Because whenever compiler come across static keyword, its expected to generate code to initialize (zero or explicitly specified value) the static variable in data segment or BSS segment. In our scenario memory will not be allocated for a structure declaration, and so compiler throws error.

Upvotes: -2

Snukus
Snukus

Reputation: 1302

You're probably getting confused by the fact that Static isn't used for the same purposes that it is in languages such as Java or C# (or C++ for that matter). This post explains C's usage of static thoroughly:

What does "static" mean?

Upvotes: 4

Adam
Adam

Reputation: 17389

It seems like you're asking about the intuition behind a static member. A static member means one-per-type instead of one-per-instance. In your case, if you had

struct my_struct a, b;

then a and b would each have their own x but would share a common y. This is also true of static member functions.

But like was stated, this doesn't apply to C. It does to C++ and Java, though.

Upvotes: 2

Mitch Wheat
Mitch Wheat

Reputation: 300827

No, not in C

(You can have a static member in a C++ structure.)

Upvotes: 7

Paul R
Paul R

Reputation: 213200

No, that would make no sense in C. It's valid in C++ though.

Upvotes: 19

Related Questions