For input.c:
#ifdef X
int v;
#else
float v;
#endif
What I expect:
v foo.c /^int v;$/;" kind:variable cppcontext:#ifdef X
v foo.c /^float v;$/;" kind:variable cppcontext:#else X
ctags has an implementation of an interval tree. So I guess implementing the cppcontext field is not so hard.