c++ - 新的,Microsoft 除外

标签 c++ visual-c++ g++ new-operator

当我同时为 Windows 和 Linux 编写代码时,我遇到了一大堆问题。 Microsoft Visual C++ 没有 stdint header ,但我为此编写了自己的 header 。

现在我发现 MS C++ 的 new 运算符不会抛出异常,所以我想尽快解决这个问题。我知道我可以用括号中的参数定义一个宏,我可以定义一个宏来替换

MyClass x = new MyClass();

#ifdef MSC_VER
if(!(MyClass x = new MyClass())
{
    throw new std::bad_alloc();
}
#else
MyClass x = new MyClass();
#endif

(或类似的东西),并且在 MS C++ 和 G++ 中工作?

或者如果那不可能,一个批处理文件来运行代码来执行此操作? 我变得相当依赖抛出的这个异常。

最佳答案

Microsoft 的 C++ 编译器非常接近 100% 符合标准,除了一些不明确的地方。不在 new 中抛出异常不是其中之一。

除此之外,您不能编写可以检测该表达式并相应地处理它的宏,除非您想重写对 new 的所有使用(违背目的)。

关于c++ - 新的,Microsoft 除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2435942/

相关文章:

opencv - 找不到 -lippicv 的库

c++ - CRichEditCtrl::StreamIn 丢失格式

c++ - 有没有办法防止 "keyword"在 MS Visual Studio 中突出显示语法

c++ - 自动化我的 Makefile

c++ - 无法使用 OpenCV 3.1.0 检测 ArUco 标记

c++ - 获取二进制图像中的值

c++ - g++编译错误.h文件

c++ - 通过网络广播服务器存在

c++ - Visual Studio 2013 是否提供了对 c++11 的 high_performance_clock 的改进?

c++ - 在 Qt 代码上使用 Fortify SCA(未过时 "HP Fortify")