Kullanımdan kaldırmaya çalıştığım birkaç TypeDef var. Bunu zaten var olan kodla geriye dönük uyumluluk sağlamak için yapıyorum. Buna zarif (veya belki de çok da zarif olmayan) bir çözüm var mı? Platformdan bağımsız olmak isterdim, ancak bir Visual Studio tek çözümü varsa, bu da işe yarayacak. MSVC++ yılındaDeprecate Typedef
cevap
, böyle typedef
kullanımdan kaldırmak olabilir:
typedef __declspec(deprecated) int myint;
MSVC++ derleyici myint
kullanımdan kaldırıldı konusunda uyararak üretecektir!
Ve kaldırılmış typedef derlerken derleyici belirli bir mesajı oluşturmak istiyorsanız, o zaman bu yapın: kerelik kolay kod değişiklikleri izin verilir
typedef __declspec(deprecated("myint is deprecated, so most likely in the next version this myint will be missing")) int myint;
ne yapıyor? Son kısmı kaçırdığınızı düşünüyorum :)) – lurscher
Muhtemelen son parantezi kapatmanız gerekiyor. OT: http://xkcd.com/859/ – KitsuneYMG
@KitsuneYMG: Evet. Bu bir yazım hatasıydı. Teşekkürler! – Nawaz
Eğer sadece deprecated
içine typedef hareket olabilir typedef kullanan noktalarda using namespace deprecated
kullanımını gerektiren ad alanı.
o , örneği oluşturulan, bir uyarı üretecek bir şablon uydurmak mümkün olabilir bir seçenek değildir, ama hazırlıksız böyle bir uyarı oluşturmak için nasıl bilmiyorsanız:
template <class T>
class TypedefHolder;
template <>
class TypedefHolder<int>
{
typedef int WhateverType;
// Something that induces a compile warning.
};
böylece yerine:
typedef int WhateverType;
o olur:
typedef TypedefHolder<int>::WhateverType WhateverType;
Derleyici uyarıları oluşturabilirsem, bu çok iyi bir çözüm olduğunu düşünüyorum. Özel uyarılar hakkında herhangi bir fikri olan var mı? – Samaursa
Taşınabilir çözüm yoktur. @Nawaz Microsoft uzantısını verdi. Gcc karşılığı 'typedef int myint __attribute __ ((kullanımdan kaldırılmış));'. – aschepler