Gccsense против clang_complete

Я использовал omniCppComplete + ctags какое-то время и хочу сделать дальнейшее улучшение при завершении кода.

Согласно предложению здесь [1], gccsense и clang_complete кажутся альтернативами. Однако я не уверен, какой из них лучше. Любая идея об их исполнении?
Спасибо!

Обновление: После того, как я попытался выполнить clang_complete, я обнаружил, что скорость завершения крайне неприемлема. Затем я попробовал его с помощью libclang.dylib, который ускоряется, но все же заставляет чувствовать себя отстающим. Я думаю, что сейчас я должен придерживаться ctags.

Ответы

Ответ 1

Вероятно, вы должны использовать clang_complete, а не gccsense.

Главное здесь - архитектура двух. Идея обоих решений очень похожа: вы не можете получить нормальное завершение С++ без доступа к внутренней информации компилятора (gcc) (абстрактное дерево синтаксиса), в то время как gcc не предоставляет вам достаточных интерфейсов для этого. Часть реализации этой информации, однако, здесь совсем другая: gccsense - это своего рода "хак" - это пользовательская сборка gcc, способная хранить необходимую информацию для последующего предоставления ее плагину, в то время как clang_complete идет другим путем, используя альтернативу компилятор: clang, одна из главных целей создания которого была именно то, что AST легко доступным для внешних инструментов.

Итак, в случае использования gccsense вам нужно будет скомпилировать свой код с помощью своего собственного компилятора gcc, который уже немного устарел (gccsense использует gcc 4.4) и будет постоянно нуждаться в поддержке разработчиков в функции. Напротив, clang_complete не так сильно зависит от компилятора clang, он использует его как внешний инструмент.

Что касается производительности: снова clang был разработан быстрее, чем gcc, и это так. Clang_complete может быть немного медленнее в Windows, чем в MacOS/Linux, однако gccsense даже не может быть скомпилирован для Windows в то время.

Ответ 2

GCCsense может быть встроен в Windows. Смотрите мой патч на gcc 4.5.2 здесь: http://forums.codeblocks.org/index.php/topic,13812.msg94824.html#msg94824

Я признаю, что gccsense - это просто взломать gcc, но clang имеет гораздо лучший дизайн с самого начала.

Я надеюсь, что кто-то может улучшить gcc/gccsense.