信号处理函数应为 POF
15.5 ID_nonPOFHandler
POF(plain old function)是不依赖 C++ 特性且与 C 兼容的函数,信号处理函数应为 POF。
异常处理、资源的分配与回收、动态类型转换以及相当一部分的标准库功能是非信号安全的,会导致未定义的行为,详见“C++ 信号处理函数”,即使某些特性可以用于信号处理,也是由实现定义的。
示例:
void handler(int signum) noexcept; // Non-compliant
应改为:
extern "C" void handler(int signum); // Compliant
相关
依据
ISO/IEC 14882:2003 18.7(5)-implementation
ISO/IEC 14882:2011 18.10(9)-implementation
ISO/IEC 14882:2017 21.10.4(3)-undefined