重複の可能性:
C ++マクロを再定義してから、定義し直すことはできますか?
アプリの存続期間中にサードパーティのSDKから関数を何度も呼び出すアプリケーションがあります。このサードパーティ関数は、その_3RDPARTY_ASSERT(_ASSERTのラッパー)でいくつかのエラーをチェックします。
私の問題は、これらの呼び出しの1つで、エラーが発生することがある(そして後で処理する)ことです。この場合、デバッグ中に非常に煩わしいため、アサートを無効にしますが、他のすべての場合はそのままにしておきます。
プラグマpush_macro/pop_macroで処理しようとしましたが、方法が見つかりませんでした。これは可能ですか?
私は3rdParty.cppのソースを持っていますが、それに触れたくないです。
これは、コードの簡略化されたバージョンになります。
mine.cpp:
#include "3rdparty.h"
HRESULT MyMethod(...)
{
HRESULT hr;
hr = _3rdParty(...);
if (SUCCEEDED(hr))
hr = _3rdParty(...);
if (SUCCEEDED(hr))
hr = _3rdParty(...);
...
if (SUCCEEDED(hr))
hr = _3rdParty(...); // This call shouldn't throw the assertion, as I expect it to fail sometimes!
if (FAILED(hr))
doSomething();
else
doSomethingElse();
...
if (SUCCEEDED(hr))
hr = _3rdParty(...);
return hr;
}
3rdParty.cpp:
...
#define _3RDPARTY_ASSERT (_ASSERT)
...
HRESULT _3rdParty(...)
{
HRESULT hr;
hr = SomeFunction();
_3RDPARTY_ASSERT(SUCCEEDED(hr));
return hr;
}