转载:glut.h 与 stdlib.h中 的exit()重定义问题的解决

遇到的问题,来自:http://blog.sina.com.cn/s/blog_629c53bd0100f5li.html

出现:

c:\codeprogram\microsoft visual studio 10.0\vc\include\stdlib.h(353): error C2381: “exit”: 重定义;__declspec(noreturn) 不同
1> c:\program files\microsoft sdks\windows\v7.0a\include\gl\glut.h(146) : 参见“exit”的声明

解决:

  在网上搜了解决方法:

方案一:

    在C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\gl\glut.h的144行处,即

    #if defined(_WIN32)
    #ifndef GLUT_BUILDING_LIB

    extern _CRTIMP void __cdecl exit(init);

    把extern _CRTIMP void __cdecl exit(init);注释掉,然后添上
    #if _MSC_VER >= 1200
    _CRTIMP __declspec(noreturn) void   __cdecl abort(void);
    _CRTIMP __declspec(noreturn) void   __cdecl exit(int);
    #else
    _CRTIMP void   __cdecl abort(void);
    _CRTIMP void   __cdecl exit(int);
    #endif
方案二:

    #include <stdlib.h>
    #include <gl/glut.h>  (Just change the definition order = 改变顺序)

    即<gl/glut.h>要放在stdlib之后包含。

 

原文地址:https://www.cnblogs.com/Null2051/p/2508330.html