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. estática en typedef struct
- 3. C++ plantilla typedef
- 4. declarar typedef tipo
- 5. typedef type checking?
- 6. typedef const puntero WEIRDNESS
- 7. typedef cambios intencionados
- 8. typedef Fundamental sintaxis operando
- 9. struct y typedef
- 10. typedef struct puntero definición
- 11. typesafe typedef en C++
- 12. Poco claro typedef tipo
- 13. C++ con plantilla typedef
- 14. ¿Uso válido de typedef?
- 15. typedef e incompleto tipo
- 16. @class para typedef enum?
- 17. ¿Es un typedef una definición?
- 18. typedef a tipo de plantilla
- 19. ¿Qué hace typedef en C++
- 20. BOOST_FOREACH y plantillas sin typedef
- 21. Herencia en lugar de typedef
- 22. c typedef (ed) puntero opaco
- 23. puntero de función sin typedef
- 24. puntero de la función Typedef?
- 25. C++: ¿usar auto o typedef?
- 26. C++ typedef para plantillas parciales
- 27. typedef de una matriz multidimensional?
- 28. #typedef y KVC en ObjC
- 29. ¿Cuándo no necesito un typedef?
- 30. Cómo declarar extern typedef struct?
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