在C中弃用旧名称

我在一个框架上进行了大量重命名的所有类和函数,我创建了一个转换头允许使用旧名称:

#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没有警告;由任一编译器。

http://stackoverflow.com/questions/17696217/deprecate-old-name-for-class-in-c

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:在C中弃用旧名称