Where should I use struct definition macros?

Probably not everywhere, so I want to clearly understand this topic.

I’ve created an empty class (using Class Wizard), which is meant to store a bunch of data in static members.
Trying to declare a struct in this class ends with C4430 error during the compilation, which points at the “GENERATE_BODY()” macro inside the struct. VS also doesn’t like both “USTRUCT()” and “GENERATE_BODY()”.

As far as I understand, I should use “UCLASS()” macro only in classes, which derive from UObject class. But I haven’t seen any restrictions for the “USTRUCT” macro, so I’m a bit confused. UE allows me to use the struct without the macros, but I want to be aware of possible problems if I’ll use it that way.

So where should I use struct macros, where shouldn’t and what’s the difference?

Meh, those probably declaration macros, not definition. I’m so bad with all this terminology.