CINDEX_LINKAGE int clang_getMacroArgCount(CXCursor C) { if (C.kind == CXCursor_MacroDefinition) { CXTranslationUnit tu = getCursorTU(C); ASTUnit *CXXUnit = static_cast(tu->TUData); MacroInfo *info = CXXUnit->getPreprocessor().getMacroInfo( const_cast( cxcursor::getCursorMacroDefinition(C)->getName())); return info->getNumArgs(); } else { return -1; } } Also! don't forget to add the function to libclang.exports