当我同时为 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/