2010-04-03 3 views
1

Je développe un éditeur visuel de niveau de jeu en C++. Pour cela, je veux que le mécanisme de réflexion (RTTI) connaisse les attributs de classe à l'exécution. J'utilise actuellement des fichiers PDB pour cela. Mais en utilisant PDB je ne pouvais pas récupérer la ligne de code réelle pour des informations supplémentaires dans un format commenté qui est donné pour cet attribut. Visual Studio utilise des fichiers NCB pour l'intelligence. Alors sera-t-il préférable d'utiliser NCB à la place de PDB? Si oui, comment récupérer des informations à partir de fichiers NCB? Y a-t-il un SDK comme SDK DIA?Utilisation du fichier Visual sudio .ncb pour la réflexion

+2

Que faites-vous avec l'information, exactement? Il pourrait probablement être fait dans la langue, ou au moins plus facile que d'utiliser un fichier IDE. – GManNickG

+0

informations supplémentaires pourraient être -Si nous voulons le refléter ou non -Nom pour cet attribut. -valeur maximale pour cet attribut – Neo

+1

Ce type d'information appartient à un fichier que vous créez et analysez. Ou en tant que fonctions dans ces classes pour appeler et interroger. – GManNickG

Répondre

4

Le format de fichier NCB n'est pas documenté publiquement et change avec chaque version de Visual Studio. Avec le VS2010 à venir (attendu dans environ une semaine et demie), il disparaît entièrement en faveur d'un nouveau format basé sur SQL qui devrait être beaucoup plus facile à utiliser. Microsoft met également en œuvre une API pour l'intégration avec les données Intellisense de l'analyseur.

2

I vraiment ne compterait pas sur les fichiers .ncb pour la réflexion. Ces fichiers sont destinés à intellisense, et seulement intellisense. Ils pourraient changer sans avertissement, ne pas être à jour, ou quoi avez-vous ...

Vous pourriez faire un peu de hackery macro pour obtenir la réflexion que vous cherchez (quelque chose comme pousser vos variables/méthodes dans un conteneur, et le déclarer simultanément) ... ou utilisez un framework comme Qt (qui est ce que j'ai utilisé pour mon éditeur de niveau).

Questions connexes