问题:
下面的 C 代码有一个不返回值的非 void 函数:
static tvec4 Min(const tvec4& a, const tvec4& b, tvec4& out) { tvec3::Min(a,b,out); out.w = min(a.w,b.w); }
为什么编译时没有错误?
答案:
根据 C 11 草案标准第 6.6.3 节第 2 节,此行为未定义,其中规定从 a 的末尾流出返回值的函数会导致未定义的行为。
编译器警告和错误:
含义:
未定义的行为可能会导致不可预测的结果,包括程序崩溃。建议使用 -Wall 和 -Wextra 等编译器选项来检测和修复未定义行为的实例。
以上是为什么我的非 Void C 函数不返回值不会产生编译器错误?的详细内容。更多信息请关注PHP中文网其他相关文章!