Ответ 1
Вот выдержка из страницы CDT, описывающая их разбор и индексирование (CDT/design/Overview of Parsing). Это дает довольно хорошее описание различий и быстрого отказа индексатора:
Разбор и привязка - это медленный процесс, это проблема потому что пользователь ожидает редактирования кода такие функции, как поддержка контента быстро. По этой причине магазины CDT привязка информации на диске кеш называется "индекс" или "PDOM", (Объектная модель объекта с сохранением) в чтобы иметь возможность предоставлять функции которые быстро реагируют на запросы пользователей.
Построение индекса включает в себя синтаксический анализ весь код в проекте, разрешая все привязки и привязки к индексу. Индекс затем инкрементно обновляется каждый раз пользователь редактирует файл.
Более старые версии CDT поддерживают три различные режимы индексирования, быстрая индексация, полная индексация и отсутствие индексации. Значение по умолчанию: быстрый индекс, поскольку индексирование a большой проект может занять много времени обработать. Разница между быстрые и полные индексы - это то, что быстрый индексщик будет пропускать файлы заголовков которые уже были разобраны один раз, в то время как полный индексатор всегда будет повторно разбирайте заголовочный файл каждый раз, когда он Включено. Однако важно чтобы понять, что полный индекс, несмотря на свое название, все еще не полностью точный.
Когда заголовочный файл включен в исходный файл подлежит любому макросы, которые были определены при этом точка. В некоторых библиотечных заголовках используются макросы в сочетании с препроцессором условные (#ifdefs) частично включить заголовочный файл. Иногда такие заголовочный файл включен больше, чем один раз в проекте, если макросы, которые заголовок зависит от разных каждый раз, когда заголовок включен, тогда различные части заголовка могут быть включены в различные исходные файлы. Ни один указатель не будет точным в этот сценарий, потому что он будет индексировать заголовок в первый раз встречаются.
Полный индексщик будет переименовывать заголовки он уже встретился, но он не будет переиндексировать их. Следовательно исходные файлы, содержащие заголовок, могут анализироваться более точно, но заголовок будет проиндексирован только один раз. Полный индексатор медленнее, чем быстрый индекс, потому что дополнительного анализа, но он лишь незначительно точнее. Для по этой причине полный индекс рекомендуется и был удален из текущая версия CDT.
Каждый проект имеет один PDOM связанные с ним. PDOM хранится на диске как плоский двоичный файл. индексатор будет индексировать только заголовки, которые включены исходными файлами, поэтому, если в проекте есть файл .h, который не включается никаким .c или .cpp, тогда обычно он не получит индексируются. Однако есть предпочтение установка для индексации всех файлов в проект.