相关疑难解决方法(0)

C-> C++在#define中自动将void指针转换为C++中的Type指针,如果没有给出类型(C风格)[MSVS]

嗨!

我使用了以下C宏,但在C++中它无法自动转换void*type*.

#define MALLOC_SAFE(var, size) { \
    var = malloc(size); \
    if (!var) goto error; \
}
Run Code Online (Sandbox Code Playgroud)

我知道,我可以这样做:

#define MALLOC_SAFE_CPP(var, type, size) { \
    var = (type)malloc(size); \
    if (!var) goto error; \
}
Run Code Online (Sandbox Code Playgroud)

但我不想重写大部分代码,MALLOC_SAFE使用的地方.

有没有办法在没有给宏的类型的情况下这样做?也许一些MSVC 2005 #pragma/__declspec/其他?

ps:我不能使用C编译器,因为我的代码是大项目的一部分(数百个模块之一).现在它是在C++上.我知道,我可以单独构建我的代码.但这是旧代码,我只是想快速移植它.

问题是关于void*cast;)如果不可能,我只需用MACRO_SAFE_CPP替换MACRO_SAFE

谢谢!

c c++ casting void-pointers visual-c++

7
推荐指数
3
解决办法
4631
查看次数

标签 统计

c ×1

c++ ×1

casting ×1

visual-c++ ×1

void-pointers ×1