Как Visual Studio Intellisense распознает функции и свойства в классах, хотя в C ++ нет отражения? - PullRequest
2 голосов
/ 16 марта 2010

Я хочу перечислить свойства и функции, присутствующие в классах c ++. Эта функциональность уже реализована в любой библиотеке? Использует ли Visual Studio Intellisense какую-либо библиотеку? Является ли эта библиотека общедоступной от Microsoft?

Ответы [ 4 ]

8 голосов
/ 16 марта 2010

Visual Studio анализирует ваш код, так что он знает. Вы должны сделать то же самое.

5 голосов
/ 16 марта 2010

Команда Visual C ++ ведет блог , в котором было несколько замечательных статей о том, как IntelliSense работал в прошлом и как он будет работать в будущем:

По сути, они строят свою собственную базу данных «отражений» (файл .ncb в текущей и предыдущей версии soft VS, используя компактную базу данных SQL, начиная с VS2010), анализируя заголовки и другие исходные файлы - используя как пользовательские парсеры, так и синтаксический анализ. сделано при сотрудничестве компилятора.

Очевидно, что по крайней мере часть этой информации доступна в VCCodeModel и связанных интерфейсах, которые предоставляет модель расширяемости Visual Studio. Я понятия не имею, насколько хорошо работает модель расширяемости или насколько она проста в использовании.

5 голосов
/ 16 марта 2010

Они используют собственный формат для хранения информации о intellisense (они сохраняются в виде файлов NCB). Вы можете удалить эти файлы, чтобы заставить VS воссоздать свою базу данных intellisense, если что-то пойдет не так.

Затем они сканируют файлы заголовков на предмет информации о классе и зависимостях, а затем создают файл NCB для дальнейшего использования.

Нет, эта библиотека недоступна для личного использования.

Intellisense в C # намного лучше, чем в C ++ VS2010 увидит, что C ++ имеет те же функции intellisense, что и C # в настоящее время.

0 голосов
/ 16 марта 2010

Я полагаю, что Visual Studio использует файлы заголовков для предоставления Intellisense.

...