- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我花了很多时间试图找出它不能正常工作的原因,但我觉得我已经涵盖了我需要的每一个案例。我似乎找不到“控制到达非空函数的末尾”错误。这是我的 switch 语句:
static unsigned int sizeIndex(size_t size) {
int determine_size = 0;
switch(determine_size) {
case 0:
if (size < 16) {
return 0;
}
case 1:
if ((size >= 16) && (size < 32)) {
return 1;
}
case 2:
if ((size >= 32) && (size < 64)) {
return 2;
}
case 3:
if ((size >= 64) && (size < 128) ) {
return 3;
}
case 4:
if ((size >= 128) && (size < 256)) {
return 4;
}
case 5:
if ((size >= 256) && (size < 512)) {
return 5;
}
case 6:
if ((size >= 512) && (size < 1024)) {
return 6;
}
case 7:
if ((size >= 1024) && (size < 2048)) {
return 7;
}
case 8:
if ((size >= 2048) && (size < 4096)) {
return 8;
}
case 9:
if ((size >= 4096) && (size < 8192)) {
return 9;
}
case 10:
if ((size >= 8192) && (size < 16384)) {
return 10;
}
case 11:
if ((size >= 16384) && (size < 32768)) {
return 11;
}
case 12:
if (size >= 32768) {
return 12;
}
}
}
任何人都可以看到为什么这会抛出“控制到达非空函数的末尾[-Werror=return-type]”错误的原因吗?
谢谢!
最佳答案
你的switch
完全没用(因为define_size
总是0
并且你不使用break
) ,因此您有一系列覆盖 size
整个范围的 if
语句。 gcc
似乎没有检查这一点。甚至以下警告控制到达非void函数的末尾
:
if (size >= 4) {
return 0;
}
if (size < 4) {
return 1;
}
但是,虽然它给出的警告给出的原因不正确,但该代码中有很多值得警告的内容。
已修复:
static unsigned int sizeIndex(size_t size) {
if (size < 16) { return 0; }
else if (size < 32) { return 1; }
else if (size < 64) { return 2; }
else if (size < 128) { return 3; }
else if (size < 256) { return 4; }
else if (size < 512) { return 5; }
else if (size < 1024) { return 6; }
else if (size < 2048) { return 7; }
else if (size < 4096) { return 8; }
else if (size < 8192) { return 9; }
else if (size < 16384) { return 10; }
else if (size < 32768) { return 11; }
else { return 12; }
}
或者:
static unsigned int sizeIndex(size_t size) {
unsigned int rv = 0;
size_t threshold = 16;
while (size >= threshold && threshold <= 32768) {
++rv;
threshold <<= 1;
}
return rv;
}
关于c - Switch 语句错误 **控制到达非 void 函数的末尾 [-Werror=return-type]**,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59231442/
我正在尝试学习这门类(class) ( https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-s096-e
这是一个 android 项目,当我决定在运行 javac 程序时将警告视为错误时,我的 ant 构建脚本有时会失败。说真的,它只是有时会这样做,这是我可能会问的另一个问题。 它将打印错误并突然取消构
如何在 Linux 中抑制 -Werror=pointer-to-int-cast 和 -Werror=address 类错误? 我知道下面是用于抑制上述错误的选项。 -Wno-error=addre
构建时出现以下错误: ...has undefined behavior [-Werror,-Wundefined-reinterpret-cast] Bazel 构建完全停止,因为 clang (l
我正在尝试将我的工作代码从 Mac OS X 移植到 GNU/Linux。 我使用的是 qsort_r,其原型(prototype)在 FreeBSD 和 GNU/Linux 上是不同的。 因此,我将
一般来说,标志位-Werror就是让所有的警告都变成错误。但它并不总是相同的。 int j; int main() { int i = 10; return 0; } 如果我输入g++
// set all values in the hash table to null for(int i = 0; i < HASH_SIZE; i++) { hashtable[i] =
我有以下测试代码 test.c : #include int *func() { int i = 123; return &i; } int main() { printf("
我正在使用模块来处理依赖项的服务器上远程工作。我正在尝试安装 dssp (https://github.com/cmbi/dssp)。在 github 上可以看到依赖项。 我加载的模块是: Curre
我正在尝试调用这个函数 static inline void insert(Buffer *buf, double f, size_t index) { insert_64(buf, *(uin
(第 43-56 行)我正在尝试为 pset 5 实现加载函数。我创建了一个嵌套的 while 循环,第一个循环迭代直到文件末尾,另一个循环迭代直到每个单词结束。我创建了 char *c 来存储我从字
目前我正在使用此命令在 Mint 中编译我的 .c 文件 gcc -std=gnu99 -Wall -Werror filename.c -o filename [-lm] 如何将这些参数设为默认值,
自学 C++ 并处理我在本地 Barnes and Noble 挑选的一本书中的示例。 “Marc Greggoire 的专业 C++”。我没有意识到这本书是为那些比我经验多一点的人准备的,但我一直在
我在功能方面遇到了一个小问题。我相信这可能是因为我没有正确使用它们。我的代码如下: int duration(string fraction) { // X part of the fract
如果 cc 配置设置为使用 -Werror 是否有办法在使用 make 时从终端覆盖 -Werror 标志? 最佳答案 您可以在调用 make 时设置标志: CFLAGS=-Wno-error mak
我想从源代码构建 nginx。所以我写了一个 bash 脚本来做到这一点: #!/bin/bash export LD_LIBRARY_PATH="/usr/lib64:$LD_LIBRARY_PAT
这是源文件 get.c 的内容: #include int main(){ //int i = 0; char b[10]; gets(b); puts(b); return 0
在使用 Makefile 制作项目时,出现此错误: error: implicit declaration of function ‘fatal’ [-Werror=implicit-function
禁止将特定警告视为GCC错误的正确标志或标志顺序是什么?我想为-Wimplicit-interface做到这一点。 >cat test.f90 call s end > gfortran -c -W
我正在尝试安装 nano-hmac-0.2.0使用 Cabal 和 GHC 6.12.1 从 Hackage 中下载包(我想要的包的依赖项),但失败并出现以下错误: Data/Digest/OpenS
我是一名优秀的程序员,十分优秀!