编译器实例的语言设置不区区只是C语言和C++语言的简单区分,其中有多达100多条设置,其中绝大部分我都看不明白,看不明白也不用去弄明白,工作这么忙,只要知其然就好,下面是我经过仔细比较得出来的需要去手动设置的项,其它的都用默认设置。
LangOptions &lo = TheCompInst.getLangOpts();
lo.MSVCCompat = 1;
lo.MicrosoftExt = 1;
lo.AsmBlocks = 1;
lo.CPlusPlus = 1;
lo.CPlusPlus11 = 1;
lo.ObjCDefaultSynthProperties = 1;
lo.ObjCInferRelatedResultType = 1;
lo.LineComment = 1;
lo.Bool = 1;
lo.WChar = 1;
lo.DeclSpecKeyword = 1;
lo.GNUMode = 0;
lo.GNUKeywords = 0;
lo.ImplicitInt = 0;
lo.Digraphs = 1;
lo.CXXOperatorNames = 1;
lo.Exceptions = 1;
lo.CXXExceptions = 1;
lo.ThreadsafeStatics = 1;
lo.ModulesSearchAll = 1;
lo.NoInlineDefine = 1;
lo.Deprecated = 1;
lo.DelayedTemplateParsing = 1;
lo.MSCompatibilityVersion = 160000000;
把这些项设置好后,再用编译器实例去解析C++代码,保准能通过。