这个错误通常是由于在代码中函数的头文件或定义中没有使用[[noreturn]]关键字的第一个声明。如果在函数的任何声明中使用了[[noreturn]],则必须在所有其他声明中使用它。
例如,以下代码会导致该错误:
// first declaration without [[noreturn]]
int someFunction(int);
// second declaration declares '[[noreturn]]', but the
// first declaration did not.
[[noreturn]] void someFunction(double);
// definition without [[noreturn]]
int someFunction(int)
{
// ...
}
修复方法是在所有函数声明和定义中都使用[[noreturn]]关键字:
[[noreturn]] int someFunction(int);
[[noreturn]] void someFunction(double);
[[noreturn]] int someFunction(int)
{
// ...
}
[[noreturn]] void someFunction(double)
{
// ...
}