I assuming that you wish to see a fatal error when the record is empty:
The empty record is just a placeholder. Its existence is valid but, declaring variables of that type is not valid.
That's why I was hoping that the compiler would provide something that would generate a compiler error if that empty record type is used to declare any variable. Part of the reason is because it's empty but, it would still be an invalid declaration if I added some fields in there because, its layout isn't documented/known.
IOW, using that empty record type should be considered an error.
The only thing that comes to mind is simply to remove the empty record declaration. That ensures a variable of that type cannot be declared since the type would no longer exist. That's probably what I'll do and make it visible only after I've figured out at least the size of the record.
Everyone, thank you for all the suggestions and thank you @PascalDragon for a unambiguous answer even if it wasn't what I wanted to read.
@Zoran,
Interesting idea. Unfortunately I cannot use it.
I initially thought that a simple example of what I wanted to accomplish would be enough. The reason I want to have that "unusable" type is because the Windows API Thread Pool functions use opaque types and all the functions take pointers to those opaque types. I wanted to declare the record as initially empty but eventually add fields in there to figure out what the actual layout of that undocumented data structure is. In the meantime, I don't want to inadvertently declare a variable of that type while it's empty.
Since the type is used by Windows APIs, it cannot be a class (that would change the semantics of the affected API definitions.)