J'ai quelques types de caractères que je veux décomposer. Je fais cela pour retenir la compatibilité en arrière avec le code qui existe déjà. Y a-t-il une solution élégante (ou peut-être pas aussi élégante) à cela? J'aimerais que cela soit indépendant de la plate-forme mais s'il y a une solution de studio visuelle uniquement, cela fera également. P>
3 Réponses :
dans msvc ++, vous pouvez décréter Le compilateur MSVC ++ générera un avertissement que Et si vous voulez que le compilateur génère un message spécifique lors de la compilation d'une dépréciation TypeDEF, alors faites ceci: P> typedef code> comme ceci: myint code> est obsolète! typedef __declspec(deprecated("myint is deprecated, so most likely in the next version this myint will be missing")) int myint;
faire quoi? Je pense que tu as manqué la dernière partie :))
@KitsuneyMg: Oui. C'était une faute de frappe. Merci!
MSVC a aussi #pragma obsolète code>, qui fonctionne aussi pour les macros.
Si des modifications de code faciles d'un seul éteint sont autorisées, vous pouvez simplement déplacer le typedef dans un espace de noms code> dépréché code> nécessitant l'utilisation de Si ce n'est pas une option, il est possible de concocter un modèle qui, lorsqu'il est instancié, générerait un avertissement, mais je ne sais pas comment générer un tel avertissement désactivé: p> donc au lieu de: p> Il devient: p> à l'aide de l'espace de noms déprécé code> aux points qui utilisent le type qui utilise le type qui utilise le fichier . typedef TypedefHolder<int>::WhateverType WhateverType;
Je pense que c'est une très bonne solution si je pouvais générer des avertissements du compilateur. Quelqu'un a-t-il des idées sur des avertissements personnalisés?
Je sais que cette question a 10 ans, mais pour tout le monde posant toujours cette question, cette syntaxe a été prise en charge Depuis C ++ 14 :
[[deprecated("reason")]] typedef int type;
Il n'y a pas de solution portable. @Nawaz a donné l'extension Microsoft. L'équivalent GCC est
Typedef int myint __attribute __ ((altéré)); code>.