Parsing C is notoriously hard, and to do what you want, you likely need name and type resolution. One needs to have what amounts to a full compiler front end to do this right;
realistically, you even need the preprocessor because the code you will read will contain preprocessor directives. These devices are a huge amount of work to put together; you're right that you really don't want to write one yourself unless you have a lot of available time.
Your realistic choices are open source packages such as GCC (hard to twist for your task), GCCXML (wants to produce declarations from well-formed programs) or Clang (similarly); Eclipse CDT has a C parser (similarly). I can't speak to whether these have APIs or licenses that satisfy you. Closed source packages may be more in alignment with your needs; EDG provides C and C++ front ends (still wants to process only fully well-formed programs), and so does my company (Semantic Designs) via our DMS Software Reengineering Toolkit.
Of this set, only DMS is likely to make the ability to parse type declarations in isolation easy; it can parse any nonterminal of its grammars (even including ambiguous ones). More importantly, if you really want to "go to a meta model", you'll likely want to parse a declaration, and determine the subtypes/referenced types (e.g., if it uses a typedef), so you want to combine full parsing with name/type resolution to provide background definitions, followed by parsing of the specific declarations you care about, followed by name and type resolution of the specific declarations using the symbol table context provided by the background definitions. The DMS machinery provides all of that capability.