やあ!
次のCマクロを使用しましたが、C++ では自動的に にキャストできませvoid*
んtype*
。
#define MALLOC_SAFE(var, size) { \
var = malloc(size); \
if (!var) goto error; \
}
私は知っています、私はこのようなことができます:
#define MALLOC_SAFE_CPP(var, type, size) { \
var = (type)malloc(size); \
if (!var) goto error; \
}
しかし、使用されたコードの大部分を書き直したくありませんMALLOC_SAFE
。
マクロに型を与えずにこれを行う方法はありますか? 多分いくつかのMSVC 2005 #pragma
/ __declspec
/other ?
ps: 私のコードは大規模なプロジェクトの一部 (数百のモジュールの 1 つ) であるため、C コンパイラを使用できません。そして今は C++ です。コードを個別にビルドできることはわかっています。しかし、それは古いコードなので、すぐに移植したいだけです。
問題は void* キャストに関するものです;) それが不可能な場合は、MACRO_SAFE を MACRO_SAFE_CPP に置き換えます。
ありがとう!