type redefinition 的解决方法
我们的 engine 中定义了一个自己的类型叫做 boolean ,是这样定义的: typedef unsigned long int boolean;
我们的程序不主张使用 windows.h ,一直以来也没有去包含 windows.h
但是,今天包含 windows.h 时发现,boolean 被 redefinition 了。因为 C 语言里的 #ifdef 只能检查宏定义,而不能检查 typedef 定义,所以这个问题比较棘手。
当然,我不能修改 windows 系统头文件的内容;同样,我也不希望修改我们引擎的头文件。
实际上,如果多次 typedef 的类型完全一致的话,编译器是不会报错的。可惜 rpcndr.h 这个头文件中,是这样写的。 typedef unsigned char boolean;
下面是一个解决方案。
当然这样用的前提是,我知道我调用的所有 Windows API 都不会涉及 windows 定义的那个 boolean。
Comments
Posted by: Anonymous | (10) January 19, 2007 02:01 AM
Posted by: jason zhang | (9) September 4, 2006 06:09 PM
Posted by: jason | (8) September 4, 2006 06:06 PM
Posted by: 小样 | (7) August 7, 2006 10:08 PM
Posted by: Anonymous | (6) April 24, 2006 04:04 PM
Posted by: 恋花蝶 | (5) March 23, 2006 11:12 AM
Posted by: Cloud | (4) March 21, 2006 10:58 PM
Posted by: Zenberg | (3) March 21, 2006 10:50 PM
Posted by: Cloud | (2) March 21, 2006 02:05 PM
Posted by: Atry | (1) March 21, 2006 12:46 PM