Cee Language Family Front End

Clang ( http://clang.llvm.org/ ) is a front end for a compiler of CeeLanguage, ObjectiveCee and CeePlusPlus. It is a part of the LLVM (LowLevelVirtualMachine) project.

This WikiPedia article gives an introduction to the Clang and why it exists: http://en.wikipedia.org/wiki/Clang

There is a searchable version of the development message list at http://news.gmane.org/gmane.comp.compilers.clang.devel


There is also an implementation of the C++ standard library, called libc++, which now is released with Clang.

Version 3.4 and later make significant progress to implementation of c++14 (formerly c++1y see CeePlusPlusOneWhy).

For download details see the LowLevelVirtualMachine page.


As well as providing an alternative tool chain to the GnuCompilerCollection it also provides StaticCodeAnalysis tools.

There is an experimental version of Clang called ConceptClang which is working on implementing CppAndConcepts replacing ConceptGcc.

See TooFewTemplateParameterLists for an example of the improved error messages compared to GnuCpp.

The error messages have really helped me on several occasions. I have been able to sort out a couple of bugs which had been in some code for a long time. -- JohnFletcher


I have just found a really useful article on UndefinedBehavior in CeeCeePlusPlus and how Clang deals with the issues. See WhatEveryCeeProgrammerShouldKnow -- JohnFletcher


The underlying activity in Clang is to turn the input source code into an AbstractSyntaxTree (AST) representation. There is a tutorial on this at http://amnoid.de/tmp/clangtut/tut.html (somewhat dated and referring to an earlier stage of the Clang work). -- JohnFletcher


I thought that having a good compiler such as Clang was going to be a great benefit. So it is most of the time. I have been using it on some old code and found some old errors which is very good. Now as I am working through some more of the errors I have found something which had been below my radar and is a consequence of the new standard for CeePlusPlus (see CeePlusPlusEleven) and it breaks some of my code in a way I cannot see an easy way to fix. I suppose I should be grateful to Clang and the authors. My code is broken. See ImplicitlyDeletedCopyConstructor.

The above was how it felt to me a couple of days ago. What I have found out since is very interesting and worthwhile to put here to guide others.

One lesson seems to be that it is important to keep everything uptodate, including myself. I have decided to learn more about the features in CeePlusPlusEleven.

Another lesson is only to report bugs when I am sure what they are and where they are.

The eventual solution to these problems has been to update my UbuntuLinux from 10.04 to 12.04, another long term support version. This gives me gcc 4.6 which has libraries which will also work with Clang 3.2 even with C++11. This is helpful as I have a number of libraries which I have never managed to get working with Clang.

-- JohnFletcher


CategoryCpp CategoryCee CategoryLint CeePlusPlusRoadMap


EditText of this page (last edited September 8, 2014) or FindPage with title or text search