My question is, is there anything like this for C?, or are there any reliable ways of doing reflection with extended code metadata in C?

Ideally, I'm looking for something that reads javadoc-like comments.

Edit: The reason for me *needing* as opposed to just wanting, is that I need to generate C code and code-metadata from a database, as well as being able to edit that metadada and update the database. The volume of the work (~15,000 variables/structures/functions to generate from this database) justifies the solution.

Despite this, I strongly suggest you to use of some kind of full-blown code-generation tool for this task (as Brian already did).

All of the above-mentioned preprocessor-based tools, at the very end, are just convoluted ways to perform some kind of code generation. You could just implement your own full-blown, well-behaved code-generation tool instead. Ruby, Python and Perl offer a lot of good tools for this. For example, Ruby has its own Modelling and Code Generation framework:

Using a general-purpose scripting language and a code-generation framework, you will end up developing a real, stand-alone application that will query your DB and generate metadata and code accordingly. It can look like a big and complicated solution but it is actually easier to write and much more maintaineable than a preprocessor-based one (because a full-blown scripting language is much more powerful and flexible than the C preprocessor).

Moreover, from your "feature-requests list" I'm getting the feeling that none of the existing preprocessor-based tools can be used for your task "as is" because the C preprocessor cannot easily deal with a DB and because your task will most likely require a two-pass process (one pass for quering the DB and generate the required metadata and a second one for generating the C code from the metadata).

Attributes and their associated behavior are just code if you could expand them. It would take a ton of setup but you'd have full control. If you're generating this from a database, I think you have an extremely strong case--this is what ORMs do.

I have to generate both, the metadata validates ranges and values for the generated code when it goes into another environment. This is for embedded software, so an ORM would be way too much overhead.
–
dukeofgamingNov 15 '12 at 20:11

Seems like all you need to generate is the struct and setter operations. The setters will have hardcoded constraints in them (but can be regenerated). How is this not good enough? So you could have some markup that says <struct><Name="Person"><MaxNameLength="60"></struct> and all you'd need to do is write a program to consume this format to generate C data structures and functions that don't allow Name to be greater than 60 characters.
–
brianNov 15 '12 at 21:07

The metadata needs to stay as metadata for another tool to generate other stuff at the same time with the code.
–
dukeofgamingNov 15 '12 at 21:27

Yes it's a tough sale if all your tools can't consume the metadata in a uniform way. My solution would only work if you had full control.
–
brianNov 15 '12 at 21:51