2.1.51. --[no_]force_new_nothrow

此选项控制 C++ 中 new 表达式的行为。

C++ 标准规定只允许用 throw 声明的无抛出 operator new 在失败时返回 NULL。 从不允许任何其他 operator new 在失败时返回 NULL,并且缺省的 operator new 在失败时将抛出异常。

如果使用 --force_new_nothrow,则编译器会将使用全局 ::operator new::operator new[] 的表达式(如 new T(...args...))视为 new (std::nothrow) T(...args...)

此外,--force_new_nothrow 还会使编译器将类特定的任何 operator new 或任何重载的全局 operator new 视为无抛出。

Note

--force_new_nothrow 选项仅作为不符合 C++ 标准的旧式源代码的迁移辅助选项。 不建议使用此选项。

模式

仅当源语言为 C++ 时,此选项才有效。

缺省选项

缺省为 --no_force_new_nothrow

示例


struct S

{

    void* operator new(std::size_t);

    void* operator new[](std::size_t);

};

void *operator new(std::size_t, int);

如果启用 --force_new_nothrow 选项,则上述示例将被视为:


struct S

{

    void* operator new(std::size_t) throw();

    void* operator new[](std::size_t) throw();

};

void *operator new(std::size_t, int) throw();

另请参阅

Copyright © 2007 ARM Limited. All rights reserved. ARM DUI 0348AC
Non-Confidential