gpt4 book ai didi

c++-cli - 我可以防止嵌套的弃用方法调用引发警告吗?

转载 作者:行者123 更新时间:2023-12-02 03:23:30 26 4
gpt4 key购买 nike

我有一些库代码,其中有一些我想从中移除的遗留代码。为此,我已开始将过时的方法标记为已弃用。在这些方法相互调用的地方,我收到了我不想看到的弃用警告(新功能意味着您只需要一次调用,因为暴露的类工作机制的内部较少)。

有没有办法抑制从 OldMethodOldMethodHelper 的调用的弃用警告? ..或者更好的方法来完成这项工作?

例如(在 MyClass.h 中):

public ref class MyClass
{
public:
[Obsolete]
void OldMethodHelper();

[Obsolete]
void OldMethod();

void NewMethod();
};

MyClass.cpp中:

void MyClass::OldMethodHelper()
{
// Some old helper method that's called both from within this class and externally.
}

void MyClass::OldMethod()
{
OldMethodHelper(); // I don't want this call to raise a deprecation warning.
}

void MyClass::NewMethod()
{
// A new method which replaces the calls to both of the previous methods.
}

代码是这样调用的:

int main(array<System::String ^> ^args)
{
Console::WriteLine(L"Hello World");

MyClass m;
m.OldMethodHelper(); // This should raise a deprecation warning.
m.OldMethod(); // This should raise a deprecation warning.
m.NewMethod();

return 0;
}

编辑 - 我找到了another post on SO这表明使用 #pragma warning(disable: 4996) 是一种可能,但对我来说这似乎是一种笨拙的解决问题的方法:

    void MyClass::OldMethod()
{
#pragma warning(push)
#pragma warning(disable: 4996) //4996 for _CRT_SECURE_NO_WARNINGS equivalent
OldMethodHelper(); // I don't want this call to raise a deprecation warning.
#pragma warning(pop)
}

Edit2 - 对代码示例进行了一些更正/澄清。

最佳答案

说话没有证据,但也许一个宏可以帮助这里。展示比解释更容易:

MyClass.h
---------

#ifndef MYCLASS_DEPRECATE
#define MYCLASS_DEPRECATE [Obsolete]
#endif

class MyClass
{
MYCLASS_DEPRECATE void OldMethodHelper();

...
}

MyClass.cpp
-----------

#define MYCLASS_DEPRECATE
#include "MyClass.h"

// The rest of the code

关于c++-cli - 我可以防止嵌套的弃用方法调用引发警告吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31648395/

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