3

Mon projet a un groupe de #ifdefs. Les macros utilisées par ces #ifdef sont généralement passées à travers la ligne de commande en utilisant l'option '/D' pour obtenir différentes configurations de construction. Visual Studio suppose à tort que ces macros ne sont pas définies et grise les blocs de code présents à l'intérieur de ces #ifdef s. Le problème n'est pas la coloration syntaxique - je peux transformer le code grisé en code de couleur à partir d'Options; le problème principal est que je ne suis pas capable d'aller à la définition de la fonction de toutes les fonctions présentes à l'intérieur de ce #ifdef. J'ai essayé de lire sur Visual Studio hint files mais cela n'a pas fonctionné pour moi.Visual Studio marquant de manière incorrecte les blocs de code inactifs lors de l'utilisation de `# ifdef`

Quelqu'un peut-il m'aider avec ce problème? J'utilise Visual Studio 2008.

Répondre

0

Si vous ne déboguez pas, et que vous essayez simplement de faire réagir intellisense ou quoi que ce soit, vous pouvez toujours lancer rapidement un #define pour forcer l'EDI à se comporter.

Semble vous avez un problème similaire à celui-là:

Can intellisense be enabled in VS2008 within preprocessor directive blocks like #ifndef ... #endif

+0

C'est une solution, mais il y a un tas de #ifdefs, pas seulement un, et ils sont dispersés. Donc, je voudrais avoir une meilleure solution que cela. – Ashwin

2

Avez-vous défini plusieurs types de VS au sein construit comme configurations comme Debug, Release, ou vous construisez avec makefiles? Si vous n'avez pas enseigné VS sur vos options/D alors je suppose que cela ne peut pas vous aider. Mais vous devriez être capable de configurer des définitions de préprocesseur sous les propriétés du projet (Propriétés de configuration, C/C++, Préprocesseur) pour obtenir l'effet que vous voulez, n'est-ce pas?

Pour chaque option /DMACRO=XXX que vous transmettez au compilateur, spécifiez MACRO=XXX dans les définitions de préprocesseur IntelliSense. Pour chaque option /DMACRO (aucune valeur) que vous transmettez au compilateur, spécifiez MACRO dans les définitions du préprocesseur IntelliSense.

+0

Je construis avec makefiles. Et j'ai essayé de suivre les instructions données ici (http://msdn.microsoft.com/en-us/library/ms173379%28VS.80%29.aspx). J'ai demandé à VS d'activer une macro en utilisant/DMACRO = 1 dans les définitions de préprocesseur sous Propriétés de configuration-> NMake-> Intellisense. Fermez la solution, supprimez le fichier .ncb, rouvrez la solution, laissez Intellisense s'exécuter, nettoyez et reconstruisez la solution. Les choses ne semblent toujours pas fonctionner. – Ashwin

+0

@Ashwin Vous voulez juste 'MACRO = 1' dans cette boîte d'options. La partie '/ D' est juste pour le compilateur. –

Questions connexes