Usage of “static” within a struct in C

后端 未结 6 1816
闹比i
闹比i 2020-12-18 18:53

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

For example

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

If indeed

相关标签:
6条回答
  • 2020-12-18 19:34

    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?

    0 讨论(0)
  • 2020-12-18 19:36

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

    0 讨论(0)
  • 2020-12-18 19:41

    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.

    0 讨论(0)
  • 2020-12-18 19:47

    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.

    0 讨论(0)
  • 2020-12-18 19:48

    No, not in C

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

    0 讨论(0)
  • 2020-12-18 19:50

    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..

    0 讨论(0)
提交回复
热议问题