我在一个已经大量重命名了它的所有类和函数的框架上工作,我创建了一个允许使用旧名称的转换头:
#define OldClassA NewClassA
#define OldClassB NewClassB
...
现在我希望编译器在使用旧名称时警告用户。我该怎么做?
int main(){
NewClassA newA;
OldClassA oldA; // <-- This one would emit a warning
}
最佳答案
正如其他人所说,这是非常特定于编译器的。假设您的类是用新名称定义的。以下是您可以使用 GCC 和 MSVC 执行的操作:
class NewClassA {}; // Notice the use of the new name.
// Instead of a #define, use a typedef with a deprecated atribute:
// MSVC
typedef NewClassA __declspec(deprecated) OldClassA;
// GCC
//typedef NewClassA __attribute__((deprecated)) OldClassA;
int main(){
NewClassA newA;
OldClassA oldA;
}
MSVC 产量:
warning C4996: 'OldClassA': was declared deprecated
GCC 产量:
warning: 'OldClassA' is deprecated
任一编译器都不会为 NewClassA newA;
发出警告。
关于c++ - 弃用 C++ 中类的旧名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17696217/