import clang.c.index; import std.string; extern (C) int printf(in char*, ...); immutable(char*)* strToCArray (string[] arr) { if (!arr) return null; immutable(char*)[] cArr; cArr.reserve(arr.length); foreach (str ; arr) cArr ~= str.toStringz; return cArr.ptr; } int main (string[] args) { CXIndex Index = clang_createIndex(0, 0); CXTranslationUnit TU = clang_parseTranslationUnit(Index, null, strToCArray(args), cast(uint) args.length, null, 0, CXTranslationUnit_Flags.CXTranslationUnit_None); for (uint I = 0, N = clang_getNumDiagnostics(TU); I != N; ++I) { CXDiagnostic Diag = clang_getDiagnostic(TU, I); CXString String = clang_formatDiagnostic(Diag, clang_defaultDiagnosticDisplayOptions()); printf("%s\n", clang_getCString(String)); clang_disposeString(String); } clang_disposeTranslationUnit(TU); clang_disposeIndex(Index); return 0; }