【发布时间】:2018-03-18 14:29:00
【问题描述】:
我得到的确切警告是
warning C4715: "spv::Builder::makeFpConstant": not all control paths return a value
而spv::Builder::makeFpConstant 是
Id Builder::makeFpConstant(Id type, double d, bool specConstant)
{
assert(isFloatType(type));
switch (getScalarTypeWidth(type)) {
case 16:
return makeFloat16Constant(d, specConstant);
case 32:
return makeFloatConstant(d, specConstant);
case 64:
return makeDoubleConstant(d, specConstant);
}
assert(false);
}
谁能帮帮我?
【问题讨论】:
-
这意味着您的函数需要返回,但在某些情况下您的程序可能会采取最终没有返回的路线
-
您当前的构建设置可能会禁用
assert。 -
断言是“这不应该发生”。它是一种省力的合约,在运行时进行检查,并且(通常)从生产代码中编译出来。您仍然需要处理“永远不会发生”的控制路径以返回或抛出。即使 getScalarTypeWidth 可以返回的唯一可能值是 16、32 和 64,编译器也不知道。
-
@KillzoneKid:你们为什么要在 cmets 部分提供技术解释?请使用 cmets 请求澄清和批评问题。答案部分是技术响应的地方。
-
@Eljay:你也一样。
标签: c++