【问题标题】:error: "control may reach end of non-void function"错误:“控制可能到达非空函数的末尾”
【发布时间】:2014-09-02 09:38:07
【问题描述】:

我一直在关注这个视频BMP Loader for GLUT。我一直在最后一个括号上收到错误“控件可能到达非无效函数的结尾”。如何解决此错误?我觉得奇怪的是,如果文件“fp”没有打开,那么当文件“fp”一开始没有打开时,就可以关闭它!

#include "Texture.h"

Texture::Texture(void* data, int w, int h, int format) {
glGenTextures(1, &textureID);
glBindTexture(GL_TEXTURE_2D, textureID);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, format, GL_UNSIGNED_BYTE, data);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glBindTexture(GL_TEXTURE_2D, 0);
}

Texture* Texture::loadBMP(const char* filename) {
FILE* fp;
fp = fopen(filename, "r");
if (!fp) {
    cout << filename << "could not be opened!" << endl;
    fclose(fp);
    return NULL;
    }
}

【问题讨论】:

  • 需要在函数末尾加上return。函数不返回任何文件已成功打开。
  • 感谢您的及时答复。现在可以了。有趣的是,在返回 NULL 之后,视频没有其他返回。
  • 嗯,当你尝试从随机记录的在线“tuts”中学习 C++ 时,就会发生这种情况。

标签: c++ glut bmp


【解决方案1】:

它是这么说的:程序有可能到达loadBMP 的末尾而没有return 的任何内容。

当文件成功打开时,你需要决定你想从这个函数返回什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 2013-10-06
    • 1970-01-01
    相关资源
    最近更新 更多