我收到此错误并且无法修复,我还是菜鸟,如果有人可以帮助我,我会感谢您
此代码来自 libxenon 的 xmplayer(用于 jtag xbox)
(我尝试搜索类似的错误,但我找不到问题所在)
int FileSortCallback(const void *f1, const void *f2) { /* Special case for implicit directories */ if (((BROWSERENTRY *) f1)->filename[0] == '.' || ((BROWSERENTRY *) f2)->filename[0] == '.') { if (strcmp(((BROWSERENTRY *) f1)->filename, ".") == 0) { return -1; } if (strcmp(((BROWSERENTRY *) f2)->filename, ".") == 0) { return 1; } if (strcmp(((BROWSERENTRY *) f1)->filename, "..") == 0) { return -1; } if (strcmp(((BROWSERENTRY *) f2)->filename, "..") == 0) { return 1; } } /* If one is a file and one is a directory the directory is first. */ if (((BROWSERENTRY *) f1)->isdir && !(((BROWSERENTRY *) f2)->isdir)) return -1; if (!(((BROWSERENTRY *) f1)->isdir) && ((BROWSERENTRY *) f2)->isdir) return 1; //Ascending Name if (XMPlayerCfg.sort_order == 0) { return stricmp(((BROWSERENTRY *) f1)->filename, ((BROWSERENTRY *) f2)->filename); } //Descending Name else if (XMPlayerCfg.sort_order == 1) { return stricmp(((BROWSERENTRY *) f2)->filename, ((BROWSERENTRY *) f1)->filename); } //Date Ascending else if (XMPlayerCfg.sort_order == 2) { if ( ((BROWSERENTRY *) f2)->date == ((BROWSERENTRY *) f1)->date) { //if date is the same order by filename return stricmp(((BROWSERENTRY *) f2)->filename, ((BROWSERENTRY *) f1)->filename); } else { return ((BROWSERENTRY *) f1)->date - ((BROWSERENTRY *) f2)->date; } } //Date Descending else if (XMPlayerCfg.sort_order == 3) { if ( ((BROWSERENTRY *) f2)->date == ((BROWSERENTRY *) f1)->date) { //if date is the same order by filename return stricmp(((BROWSERENTRY *) f1)->filename, ((BROWSERENTRY *) f2)->filename); } else { return ((BROWSERENTRY *) f2)->date - ((BROWSERENTRY *) f1)->date; } }}
最佳答案
编译器分析您的代码,并发现将针对 sort_order
和 0
之间的所有 5
值执行 return 语句,包括。但是,如果 sort_order
为负数或大于 5
,则代码将到达函数末尾而没有 return 语句;这就是编译器发出警告的原因。
请注意,由于代码其他部分的限制,可能无法将 sort_order
设置为负数或超过 5
的数字。然而,编译器并不知道这些,所以它认为 sort_order
可以有任何值。
要解决此问题,请在末尾添加无条件 return 语句。
关于c++ - 警告 : control reaches end of non-void function (c++),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13216022/