Search code examples
cstaticstructtypedef

Using static on typedef struct


I use the following code a lot in C:

typedef struct
  {
  int member;
  } structname;

Now i'm trying to keep that struct definition local to a particular source file, so that no other source file even knows the struct exists. I tried the following:

static typedef struct
  {
  int member;
  } structname;

but GCC whines because of an illegal access specifier. Is it even possible to keep a struct's declaration private to a source file?


Solution

  • If you declare the typedef struct within a .c file, it will be private for that source file.

    If you declare this typedef in a .h file, it will be accesible for all the .c files that include this header file.

    Your statement:

    static typedef struct
    

    Is illegal since you are not declaring a variable or function.