Tengo algunos TypeDefs que quiero desaprobar. Estoy haciendo esto para mantener la compatibilidad hacia atrás con el código que ya existe. ¿Existe una solución elegante (o tal vez no tan elegante) para esto? Me gustaría que fuera independiente de la plataforma, pero si hay una solución de Visual Studio, eso también lo hará.Deprecate Typedef
Respuesta
En MSVC++, se puede despreciar typedef
así:
typedef __declspec(deprecated) int myint;
El compilador MSVC++ generará advirtiendo que myint
es obsoleto!
Y si desea que el compilador generar un mensaje específico al compilar un typedef en desuso, a continuación, hacer esto:
typedef __declspec(deprecated("myint is deprecated, so most likely in the next version this myint will be missing")) int myint;
hacer qué? Creo que te perdiste la última parte :)) – lurscher
Probablemente necesites cerrar el último paréntesis. OT: http://xkcd.com/859/ – KitsuneYMG
@KitsuneYMG: Sí. Eso fue un error tipográfico ¡Gracias! – Nawaz
Si se permite que una sola vez los cambios en el código fáciles que sólo podía mover el typedef en un deprecated
espacio de nombres que requiere el uso de using namespace deprecated
en los puntos que usan typedef.
Si eso no es una opción que podría ser posible confeccionar una plantilla que, cuando se crea una instancia, generaría una advertencia, pero no saben cómo generar una advertencia tales improviso:
template <class T>
class TypedefHolder;
template <>
class TypedefHolder<int>
{
typedef int WhateverType;
// Something that induces a compile warning.
};
así que en vez de:
typedef int WhateverType;
se convierte en:
typedef TypedefHolder<int>::WhateverType WhateverType;
Creo que esta es una muy buena solución si pudiera generar advertencias del compilador. ¿Alguien tiene alguna idea sobre advertencias personalizadas? – Samaursa
- 1. Deprecate la herencia de clase solo
- 2. typedef type checking?
- 3. typedef const puntero WEIRDNESS
- 4. typedef cambios intencionados
- 5. struct y typedef
- 6. C++ con plantilla typedef
- 7. @class para typedef enum?
- 8. typedef struct puntero definición
- 9. C++ plantilla typedef
- 10. estática en typedef struct
- 11. typesafe typedef en C++
- 12. Poco claro typedef tipo
- 13. declarar typedef tipo
- 14. ¿Uso válido de typedef?
- 15. typedef e incompleto tipo
- 16. typedef Fundamental sintaxis operando
- 17. Herencia en lugar de typedef
- 18. C++ typedef para plantillas parciales
- 19. ¿Qué hace typedef en C++
- 20. Cómo declarar extern typedef struct?
- 21. puntero de función sin typedef
- 22. #typedef y KVC en ObjC
- 23. c typedef (ed) puntero opaco
- 24. ¿Es un typedef una definición?
- 25. BOOST_FOREACH y plantillas sin typedef
- 26. puntero de la función Typedef?
- 27. typedef a tipo de plantilla
- 28. ¿Cuándo no necesito un typedef?
- 29. C++: ¿usar auto o typedef?
- 30. typedef de una matriz multidimensional?
No hay una solución portátil. @Nawaz dio la extensión de Microsoft. El equivalente de gcc es 'typedef int myint __attribute __ ((obsoleto));'. – aschepler