gpt4 book ai didi

c++ - 弃用 C++ 中类的旧名称

转载 作者:IT老高 更新时间:2023-10-28 21:45:37 24 4
gpt4 key购买 nike

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

#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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com