c++异常会阻止函数内联
Would C++ exception stops function from being inlined?
假设我有一个非常简单的函数,我希望编译器内联它。但是我可能需要在看到一些无效输入时抛出异常,这会阻止编译器内联函数吗?
编译器可以出于任何原因拒绝内联。GCC列出了不能内联函数的原因,但异常抛出不在其中。此外,选项-Winline将导致编译器发出警告,如果它不能内联一个你标记为内联的函数。你可以尝试一下,看看你是否做了什么来防止内联
编译器内联抛出错误的函数是完全合理和有效的
我刚刚在MSVC版本19中遇到了这种情况。在为x86编译时,抛出异常的函数不会被内联。如果我将throw
替换为exit(1)
,或者如果我编译为x86-64,它可以很好地内联。
相关文章:
- 赋予全局变量而不是局部变量优先级的函数 - (异常行为)
- 通过引用从 c++ 函数异常返回对象是否安全
- 智能指针和构造函数异常
- 构造函数C++异常说明符
- boost::archive::text_iarchive构造函数异常
- C++堆栈对象的构造函数异常处理
- 默认构造函数C++异常不会引发吗?
- 重写std的析构函数:异常
- 将向量作为参数(C++)传递时,没有匹配函数异常
- 当函数中静态变量的构造函数异常终止时会发生什么
- 如何:捕获输入函数异常的可变包装函数
- 在c++中,如果基类构造函数异常,则构造函数和析构函数的顺序可以是这样
- noexcept(false)析构函数覆盖所有特殊成员函数'异常规范
- c++重载函数异常规范
- c++ RAII析构函数异常
- 如何捕获构造函数异常
- C++构造函数异常处理
- 捕获构造函数异常的RAII方法
- C++析构函数异常
- Std::unique_ptr::reset和构造函数异常