glut.h头文件总是和C++中定义的exit冲突

原创 2007年09月28日 16:49:00
最近移植一个项目sensable的3D设备www.sensable.com, glut.h头文件总是和C++中定义的exit冲突,呵呵网上有人弄了,管用。

redefined exit() glut.h and stdlib.h
-------------------------------------------------------------------------------------------s
http://gallery.chiusir.net/imagine/viewtopic.php?t=345&sid=ab5fbe04a5ee666f34a70579c4c2e89b

GLUT - MS VC++ .NET 2003 header file changes
I was compiling this GLUT-based application by name GLUI, available at http://www.cs.unc.edu/~rademach/glui.

Got some strange compilation errors...



glui_translation.cpp
D:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/include/stdlib.h(256) : error C2381: 'exit' : redefinition; __declspec(noreturn) differs
D:/programs/glut-3.7.6-bin/GL/glut.h(146) : see declaration of 'exit'





It seems like the header file GL/glut.h ought to be changed as follows.


#if defined(_WIN32)# ifndef GLUT_BUILDING_LIB#if _MSC_VER >= 1200_CRTIMP __declspec(noreturn) void __cdecl exit(int);#else_CRTIMP void __cdecl exit(int);#endif# endif


Courtesy: thread


Apparently from the symbol guards, it seems like the prototype has
changed in VC++ 7.0 + compilers ..


# posted by Karthik Kumar : 1:35 PM
Comments:
sweet! thanks!
# posted by Anonymous : 1:30 AM
Post a Comment




/* CKC Mar2005, Ref to http://akktech.blogspot.com/2004/10/glut-ms-vc-net-2003-header-file.html
#if defined(_WIN32)
# ifndef GLUT_BUILDING_LIB
extern _CRTIMP void __cdecl exit(int);
# endif
#else
*/

//////// CKC Mar2005, Ref to http://akktech.blogspot.com/2004/10/glut-ms-vc-net-2003-header-file.html
#if defined(_WIN32)
#ifndef GLUT_BUILDING_LIB
#if _MSC_VER >= 1200
_CRTIMP __declspec(noreturn) void __cdecl exit(int);
#else
_CRTIMP void __cdecl exit(int);
#endif
#endif
#else
//////

glut.h 与 stdlib.h 的exit冲突问题的解决

exit重定义.     在网上搜了解决方法: 方案一:     在C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\gl\glut.h...
  • shenlan282
  • shenlan282
  • 2012年12月20日 11:33
  • 840

C++头文件中有定义会造成冲突隐患么? --- 谈谈4个例外情况

我们都知道C++的一次定义原则, 比如, 你要是在头文件中定义int a = 0; 那是非常危险的, 一旦被多个.cpp文件包含, 会造成链接冲突。 在本文中, 我们来看看头文件中可以有定义的四个例外...
  • stpeace
  • stpeace
  • 2015年03月20日 00:10
  • 3013

头文件与命名冲突问题

前言 老是说,定义不能放在头文件中,因为会引起重定义。但在具体操作中,发现有些定义又不得不放在头文件中。咋办?实在是一头雾水。今晚就来解决这个问题。 分析原因并解决 重定义情况一:多个文件包...
  • u010240236
  • u010240236
  • 2013年05月26日 20:48
  • 685

Windows下的基础头文件冲突

Window编程时,一般都要引用Windows.h头文件,其实这个文件也只是引用了一些其它的Windows的基础的头文件,提供了API级别的Windows系统各个方面的编程支持。 但是,winsock...
  • CharlesPrince
  • CharlesPrince
  • 2008年07月09日 17:03
  • 2584

c++中类的定义与头文件的关系

class Stack; 此句只是作为Stack class的前置申明,只是将calss名次告诉编译器,并未提供此class的任何其他信息。前置申明使得我们可以进行类指针的定义,或以此class作为...
  • wordwarwordwar
  • wordwarwordwar
  • 2014年08月28日 11:56
  • 2257

【C++】在头文件中定义全局变量的技巧

为了完成这个技巧,我们需要以下这个类,把它写在都文件中即可 template class GlobalVar{ public: static T var; }; template T Global...
  • donger_soft
  • donger_soft
  • 2015年03月26日 15:57
  • 1836

C/C++ 中 exit() 函数

【知乎上的问题】C/C++ 中 exit() 函数的参数到底有什么意义? C 语言的设计之初就是为 Unix 系统设计的,而这个系统是『很多程序互相配合』搭配成一个系统。 每个运行着的程序都是...
  • jjjcainiao
  • jjjcainiao
  • 2014年03月24日 10:30
  • 5072

exit函数的头文件问题

c标准对头文件的解释:标准头文件要有3点特征:1)幂等性:多次包含和只包含一次没差别2)相互独立性:标准头文件之间不可互相包含//说明楼上cpazstido是错的3)文件级别:头文件要在全局作用域内被...
  • crcr
  • crcr
  • 2010年07月09日 01:30
  • 4242

C/C++头文件与变量的声明和定义

C/C++头文件与变量的声明和定义最近遇到了变量重复包含的问题,才发现自己有好多知识已经模糊了,真惭愧。首先说下头文件,其实头文件对计算机而言没什么作用,她只是在预编译时在#include的地方展开一...
  • mountzf
  • mountzf
  • 2016年06月27日 11:20
  • 5171

c++中exit(1)意思

每个进程都会有一个返回值的. 进程开始时是由系统的一个启动函数掉用了main函数的: int nMainRetVal = main(); 当从main函数退出后,启动函数便调用e...
  • hezikui1987
  • hezikui1987
  • 2013年06月30日 19:52
  • 2206
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:glut.h头文件总是和C++中定义的exit冲突
举报原因:
原因补充:

(最多只允许输入30个字)