What does this code actually declare? I don't understand why there are two names after struct. This does not seem as an example of inheritance. I've looked around but did not find any help on such a weird usage.
This kind of defines is usually for building a dll. The thing is that depending on whether you are building the dll itself or using it - you need to declare functions/classes as __declspec(dllexport) and __declspec(dllimport) respectively. To keep the same header file for both versions, you include for example the following preprocessor construction: