2010-07-07 7 views
5

J'essaie de trouver toutes les méthodes non utilisées de mon projet. J'ai trouvé des façons de faire cela, mais la réponse la plus convaincante que j'ai trouvée a été de déclarer toutes mes fonctions obsolètes, et de supprimer cet attribut jusqu'à ce que je n'obtienne aucun avertissement.Marquer comme obsolète

Le problème est que je ne sais pas comment déclarer une fonction comme obsolète. Quand j'écris:

[Obsolete] 
    class Vector3{ 

    }; 

VS2005 me dit que Obsolète n'existe pas. Des suggestions?

+0

voulez-vous dire utilisé comme « non référencé dans le code » ou utilisé comme dans « Non utilisé lors de l'exécution typique » – DevinB

+0

les deux. Il peut y avoir du code inutilisé (non référencé dans le code) qui fait référence à d'autres méthodes (celles-ci sont référencées, mais jamais exécutées). – Sara

+5

Est-ce vraiment C++? –

Répondre

2

Je ne sais pas le reste de votre code source, mais vous devriez avoir une

using System; 

en haut.

+0

Essayez '[System.ObsoleteAttribute]' pour voir si cela le corrige. –

+0

Maintenant, il dit que le système n'existe pas. – Sara

+3

C'est C#. L'OP utilise C++. – Default

8

En gcc, vous utilisez __attribute__ ((deprecated)) pour étiqueter les fonctions comme obsolètes.

Il semble que __declspec(deprecated) puisse faire l'affaire dans VS. Vous devrez également activer le niveau d'avertissement 1 pour qu'il en résulte un diagnostic.

Voir http://msdn.microsoft.com/en-us/library/044swk7y%28VS.80%29.aspx

+0

Super !! ça a fait l'affaire. – Sara

+1

Le moyen le plus simple est d'ajouter un seul '#if défini (_MSCVER) #define __Declspec dévalorisé (déprécié) #elif défini (__ GNUC__) #define DEPRECATED __attribute__ ((deprecated)) # endif', de sorte que vous pouvez alors écrire' DEPRECATED class Vector3 '. – MSalters

Questions connexes