是否有一个gcc选项假设所有extern"C"函数都不能传播异常?

R..*_*R.. 27 c c++ gcc exception-handling

有没有办法,没有在每个函数原型上放置一个属性,让gcc知道C函数永远不会传播异常,即内部声明的所有函数extern "C"都应该是__attribute__((nothrow))?理想的是-f样式命令行选项.

dor*_*ron 3

您始终可以使用-fno-exceptionswhich来确保c++编译器不会生成异常传播代码。

  • 您确定您实际上正在优化真实的东西吗?如今,异常处理设置经过优化,仅在抛出异常(不常见情况)时占用 CPU 时间,而不是在未抛出异常(常见情况)时占用 CPU 时间。所以在一般情况下没有什么可以保存的。如果调用者真的关心异常开销,那么这个答案就是正确的;对于任何需要快速的代码完全关闭异常。 (9认同)
  • 定义“巨大”是因为我认为你正在抓住救命稻草。除非您在嵌入式领域工作,否则这并不重要。 (2认同)