I get compile errors for just including the "clang/Basic/Diagnostic.h" header file. Is that expected? Should I include anything else? Here are the errors:<br><br>$ g++ main.cpp -I llvm/tools/clang/include -I llvm/include<br>

<br>In file included from llvm/include/llvm/Support/PointerLikeTypeTraits.h:18,<br>                 from llvm/tools/clang/include/clang/Basic/SourceLocation.h:17,<br>                 from llvm/tools/clang/include/clang/Basic/Diagnostic.h:18,<br>

                 from main.cpp:1:<br>llvm/include/llvm/Support/DataTypes.h:45:3: error: #error "Must #define __STDC_LIMIT_MACROS before #including System/DataTypes.h"<br>llvm/include/llvm/Support/DataTypes.h:49:3: error: #error "Must #define __STDC_CONSTANT_MACROS before " "#including System/DataTypes.h"<br>

llvm/include/llvm/Support/MathExtras.h: In function ‘bool llvm::isInt(int64_t)’:<br>llvm/include/llvm/Support/MathExtras.h:38: error: there are no arguments to ‘INT64_C’ that depend on a template parameter, so a declaration of ‘INT64_C’ must be available<br>

llvm/include/llvm/Support/MathExtras.h:38: error: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)<br>llvm/include/llvm/Support/MathExtras.h:38: error: there are no arguments to ‘INT64_C’ that depend on a template parameter, so a declaration of ‘INT64_C’ must be available<br>

llvm/include/llvm/Support/MathExtras.h: In function ‘bool llvm::isUInt(uint64_t)’:<br>llvm/include/llvm/Support/MathExtras.h:57: error: there are no arguments to ‘UINT64_C’ that depend on a template parameter, so a declaration of ‘UINT64_C’ must be available<br>

llvm/include/llvm/Support/MathExtras.h: In function ‘bool llvm::isIntN(unsigned int, int64_t)’:<br>llvm/include/llvm/Support/MathExtras.h:82: error: ‘INT64_C’ was not declared in this scope<br><br>