【问题标题】:Why is exit(0) giving me errors?为什么 exit(0) 给我错误?
【发布时间】:2012-07-23 06:54:50
【问题描述】:

所以我一直在关注一个教程,当我尝试编译以下代码时:

#include <glut.h>
#include <iostream>

void render(void);
void keyboard(unsigned char c, int x, int y);
void mouse(int button, int state, int x, int y);

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
    glutInitWindowPosition(100, 100);
    glutInitWindowSize(640, 480);
    glutCreateWindow("Test GLUT App");

    glutDisplayFunc(render); // render
    glutKeyboardFunc(keyboard);
    glutMouseFunc(mouse);

    glutMainLoop(); // initialization finished. start rendering
}

void render(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glBegin(GL_TRIANGLES);
    glColor3f(0.5, 0.2, 0.9);
    glVertex2f(-0.5, -0.5);
    glColor3f(0.1, 0.2, 0.5);
    glVertex2f(0.0, -0.5);
    glColor3f(0.3, 0.9, 0.7);
    glVertex2f(0.0, 0.5);
    glEnd();

    glutSwapBuffers();  
}

void keyboard(unsigned char c, int x, int y)
{
    if(c == 27)
    {
        exit(0);
    }
}

void mouse(int button, int state, int x, int y)
{
    if(button == GLUT_RIGHT_BUTTON)
    {
        exit(0);
    }
}

我突然收到 3 个错误

错误 1 ​​错误 C2381: 'exit' : redefinition; __declspec(noreturn) 不同 c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdlib.h 353

错误 2 错误 C3861: 'exit': identifier not found ....main.cpp 45

错误 3 错误 C3861: 'exit': identifier not found ....main.cpp 53

有人知道为什么会出现这个错误吗?我用的是VS2010。

【问题讨论】:

标签: c++ visual-studio-2010 visual-c++ opengl


【解决方案1】:

你需要#include &lt;cstdlib&gt;

编辑:

您可能正在学习一个为您提供头文件的非常知名的教程。

这将对您有所帮助GLUT exit redefinition error

【讨论】:

  • 如果 GLUT 在全局命名空间中声明 exit,那么就库的质量而言,这是一个不好的迹象。
  • @JamesKanze 坏与否(我认为)它是唯一一个可以让初学者轻松入门的方法。
  • @RedX 我看不出它对任何人有什么帮助。如果库需要std::exit,则应包括&lt;cstdlib&gt;。在全局命名空间中定义 exit 会导致未定义的行为,并且从不正确。
  • @JamesKanze 库本身不是仅 C++ 的 C,因为 opengl 仅是 C。因此没有定义命名空间的选项。但恕我直言,你是对的。我不知道为什么它定义了一个exit 函数。
【解决方案2】:

如果您的 Visual Studio 引发构建错误,提示 IntelliSense 未识别“退出”,那么您必须包含 process.h

【讨论】:

    【解决方案3】:

    尝试在顶部添加using namespace std。我不确定这是否会解决它,但我之前有一个类似的错误并且修复了它。祝你好运。

    【讨论】:

      【解决方案4】:

      你需要将标题简单地声明为工作,在我的comp中工作

      #include <stdlib.h>
      #include <cstdlib>
      #include <glut.h>
      #include <iostream>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-09
        • 2020-09-02
        • 2012-02-22
        • 2013-09-02
        • 2021-08-20
        • 2023-03-17
        • 2021-03-04
        • 1970-01-01
        相关资源
        最近更新 更多