The title says it all: is it possible with a procedural macro (derive) on a structure to check whether the structure is repr(C)?
Macros don't have any information other than the literal source code you give them. They run before any types are known, so there's no information about repr(C)
. A macro (derive or attribute) on the type would be able to check for the repr(C)
(and repr(transparent)
) attribute, though. There may be tricks for sharing info between macros, but I haven't looked into it. The only similar case I needed was for deriving a trait that would also imply repr(C)
or repr(transparent)
.
Apparently, it's trivial:
That requires the macro to be on the structure and I thought you didn't want that. But if that's fine, then it's about as easy as it looks.
I think you had a very unfortunate typo here, saying without
Oh man. I'm so sorry.
No worries, it just made the answer more indirect