Search code examples
cextern

extern without type


If the syntax of extern is

extern <type> <name>;

how do I extern if I have an unnamed, single use struct:

struct {
    char **plymouthThemes;
    char *plymouthTheme;
} global;

I've tried

extern global;

without any type, and it doesn't work.

Or, do I have to name the struct?


Solution

  • You need to name your struct and put it in a .h file or included the definition by hand in every source file that uses global. Like this

    ///glob.h
        struct GlobalStruct
        {
           ///char** ...
           ///
        };
    
    ///glob.cpp
       #include "glob.h"
       struct GlobalStruct global; 
    
    ///someOtherFile.cpp
    #include "glob.h"
    
    extern struct GlobalStruct global;