我在一个框架上进行了重命名,该框架已对其所有类和函数进行了重命名,我创建了一个过渡 header ,允许使用旧名称:
#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 yield :
GCC产量:
任一编译器均未针对
NewClassA newA;
发出警告。