2011-12-19 2 views
5

Я буду работать исключительно в C. Ubunutu 10.10 будет извлекать версию 2.8 Clang из своих репозиториев и полностью ее устанавливать. Я скомпилировал Clang v 3.1 из исходного кода и добавил его на путь (после удаления Clang 2.8), но у меня нет доступа к его страницам man man, и у меня есть случайное чувство неловкости, когда он не полностью «установил его», хотя он, по-видимому, полностью работает на некоторых тестах.Любая практическая разница между версиями Clang 2.8 и 3.1 для разработчика C?

Есть ли какая-либо практическая разница между версиями 2.8 и 3.1 с точки зрения разработчика (на самом деле студента)? Я работаю исключительно на C и не буду использовать возможности C++ или Object C. Я считаю, что большая часть разработок в Clang недавно расширила возможности C++.

+0

Почему вы не читаете заметки о выпуске и не говорите нам, что вы нашли? –

+0

Я бы поверила, что оптимизация и предупреждения действительно улучшились (даже для C). Аналогичным образом, для недавних разработок GCC. –

ответ

2

Значительная разница, которую я обнаружил, заключается в том, что для параметров функции 2.8 VLA создаются ядро ​​компоновщика компилятора. В 2.9 (и, следовательно, в 3.1, я полагаю) эта ошибка кажется фиксированной.

Также эта более новая версия clang уже реализует часть C11, в частности _Generic.

+0

http://gustedt.wordpress.com/2011/01/13/vla-as-function-arguments/ –

+0

Примечание: некоторые функции C11, которые уже работают в ядре dcc gcc/icc в clang (3.1), наиболее заметно обозначенные инициализация анонимных структур и объединений – hroptatyr

+0

@hroptatyr: Однако многие расширения отсутствуют. Теперь Clang намного лучше на C++, чем на C. –