dear daniloz, you need to know how the cc's parser works.
it just do some heuristic pattern match (with out any type information), thus from my point of view, it is hard to parse these definitions. though you can fix someone( some pattern, you still lose in other ones), you can look at the cc's code, mostly parserthread.cpp.
That's why I suggest use a full parser framework, either clang or gcc to get all the information(we say AST in compiler theory

)
But this may have some other cost.
clang sounds good, but I prefer gcc

PS:
to parse this statement:
you need at least a tree structure and using some shunting-yard like algorithm.