<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Hi all,<div><br></div><div>I tried this tutorial (<a href="http://amnoid.de/tmp/clangtut/tut.html" target="_blank" style="font-size: 12pt;">http://amnoid.de/tmp/clangtut/tut.html</a>) <span style="font-size: 12pt;">and compile the code, but I am getting some errors.</span></div><div><span style="font-size: 12pt;"><br></span></div><div><span style="font-size: 12pt;">PPContext.h.</span></div><div><span style="font-size: 12pt;">-----------------</span></div><div><span style="font-size: 12pt;"><br></span></div><div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">#ifndef PP_CONTEXT</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">#define PP_CONTEXT</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec"><br></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">#include <string.h></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec"><br></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">using namespace std;</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec"><br></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">#include "clang/Frontend/CompilerInstance.h"</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec"><br></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">#include <llvm/Config/config.h></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec"><br></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">#include <clang/Basic/Diagnostic.h></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">#include <clang/Basic/TargetInfo.h></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">#include <clang/Basic/SourceManager.h></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">#include <clang/Basic/FileManager.h></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec"><br></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">#include <clang/Lex/HeaderSearch.h></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">#include <clang/Lex/Preprocessor.h></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec"><br></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">#include <clang/Frontend/TextDiagnosticPrinter.h></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec"><br></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">using namespace clang;</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec"><br></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">struct PPContext {</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">  // Takes ownership of client.</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">  PPContext(clang::DiagnosticClient* client = 0,</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">            const std::string& triple = LLVM_HOSTTRIPLE)</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">    : diagClient(client == 0?new clang::TextDiagnosticPrinter:client),</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">      diags(diagClient),</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">      target(clang::TargetInfo::CreateTargetInfo(triple)),</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">      headers(fm),</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">      pp(diags, opts, *target, sm, headers)</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">  {</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">    // Configure warnings to be similar to what command-line `clang` outputs</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">    // (see tut03).</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">    // XXX: move warning initialization to libDriver</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">    using namespace clang;</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">    diags.setDiagnosticMapping(diag::warn_pp_undef_identifier,diag::MAP_IGNORE);</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">  }</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec"><br></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">  ~PPContext()</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">  {</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">    delete diagClient;</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">    delete target;</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">  }</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec"><br></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">  clang::DiagnosticClient* diagClient;</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">  clang::Diagnostic diags;</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">  clang::LangOptions opts;</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">  clang::TargetInfo* target;</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">  clang::SourceManager sm;</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">  clang::FileManager fm;</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">  clang::HeaderSearch headers;</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">  clang::Preprocessor pp;</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">};</font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec"><br></font></i></div><div><i style="background-color: rgb(255, 255, 255);"><font color="#2672ec">#endif</font></i></div><div><br></div><div>tut01_pp.cpp</div><div>------------------</div><div><br></div><div><div><font color="#2672ec">#include "PPContext.h"</font></div><div><font color="#2672ec"><br></font></div><div><font color="#2672ec">int main()</font></div><div><font color="#2672ec">{</font></div><div><font color="#2672ec">  //PPContext context;</font></div><div><font color="#2672ec">}</font></div></div><div><br></div><div><br></div><div>Here I tried to compile the code :</div><div><br></div><div><span style="font-size: 12pt;"><font color="#e1c404">g</font><font color="#ac193d">++ -I/home/krish/llvm/build/include -I/home/krish/llvm/tools/clang/include `/home/krish/llvm/build/Release+Asserts/bin/llvm-config -cxxflags` -fno-rtti -c tut01_pp.cpp -std=gnu++11 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROSD -D__STDC_LIMIT_MACROS</font></span></div><div><span style="font-size: 12pt;"><br></span></div><div>But I am getting following error message :</div><div><br></div><div><div><font color="#008a17"><b>In file included from tut01_pp.cpp:1:0:</b></font></div><div><font color="#008a17"><b>PPContext.h:48:30: error: expected ‘)’ before ‘client’</b></font></div><div><font color="#008a17"><b>PPContext.h:69:3: error: ‘DiagnosticClient’ in namespace ‘clang’ does not name a type</b></font></div><div><font color="#008a17"><b>PPContext.h: In destructor ‘PPContext::~PPContext()’:</b></font></div><div><font color="#008a17"><b>PPContext.h:65:12: error: ‘diagClient’ was not declared in this scope</b></font></div></div><div><br></div><div>Could you please help me with this error.</div><div><br></div><div>Thank-You</div><div><br></div><div>Krish</div><div><br></div><div style="font-size: 12pt;"><br></div></div>                                           </div></body>
</html>