Is it legal to have a \"static\" member within a C struct?
For example
struct my_struct {
int x;
static int y;
};
If indeed
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?
No, that would make no sense in C. It's valid in C++ though.
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.
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.
No, not in C
(You can have a static member in a C++
structure.)
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..