为什么要用大写的那些类型修饰符?如INT与int、BOOL与bool、UINT等...
2009-01-12 17:51
302 查看
一般的任何一个正规的项目开发第一件事情要做的就是在开发环境上架一层自己的环境,主要包括类型定义、内存管理和文件管理。主要的目的是为了代码的可移植性和可维护性。
例如在标准C的环境下,16位处理器的int是16位,32位处理器的int却是32位。如果我想用一个int值来做标记,定义其倒数第2位的意义,在处理bit的时候的代码就没法写,因为不知道到底应该把标记右移几位才能到倒数第二位。这时候一个长度固定的变量是很重要的,例如我想要16位的值。这时就可以写
//在32位平台
#ifdef __WIN32__
#define INT short int
#else
//在16位平台
#define INT int
#endif
以后就用INT好了,不用再担心int到底是几位。
另外一点就是语言本身的标准和编译器厂商对标准的支持。以C++为例,直到98年才出台第一个标准,在那之前不同编译器的C++有细节上的不同。其中之一就是bool值。其实在标准出现之后,编译器厂商也不一定就支持全部标准。(一个最明显的例子就是VC6)。这样对于bool值,如果你用的是支持bool的C++编译器,就可以
#define BOOL bool
对于不支持bool关键字的,就可以
#define BOOL unsinged long
其他类似的还有一些C++模板的关键字。
对于内存管理,也可以这样设定,例如MFC中很明显就有
#ifdef DEBUG
#define new DEBUG_NEW
#endif
总之,最终的目的就是使代码尽量不受编译平台、编译器的限制。如果非得要限制的话,也要把在更新平台和编译器后所需要的改动量降到最小。楼主只看到MFC这样,是因为没有看过其他公司的东西,如果有机会到一个大的软件企业工作就全明白了。
例如在标准C的环境下,16位处理器的int是16位,32位处理器的int却是32位。如果我想用一个int值来做标记,定义其倒数第2位的意义,在处理bit的时候的代码就没法写,因为不知道到底应该把标记右移几位才能到倒数第二位。这时候一个长度固定的变量是很重要的,例如我想要16位的值。这时就可以写
//在32位平台
#ifdef __WIN32__
#define INT short int
#else
//在16位平台
#define INT int
#endif
以后就用INT好了,不用再担心int到底是几位。
另外一点就是语言本身的标准和编译器厂商对标准的支持。以C++为例,直到98年才出台第一个标准,在那之前不同编译器的C++有细节上的不同。其中之一就是bool值。其实在标准出现之后,编译器厂商也不一定就支持全部标准。(一个最明显的例子就是VC6)。这样对于bool值,如果你用的是支持bool的C++编译器,就可以
#define BOOL bool
对于不支持bool关键字的,就可以
#define BOOL unsinged long
其他类似的还有一些C++模板的关键字。
对于内存管理,也可以这样设定,例如MFC中很明显就有
#ifdef DEBUG
#define new DEBUG_NEW
#endif
总之,最终的目的就是使代码尽量不受编译平台、编译器的限制。如果非得要限制的话,也要把在更新平台和编译器后所需要的改动量降到最小。楼主只看到MFC这样,是因为没有看过其他公司的东西,如果有机会到一个大的软件企业工作就全明白了。
相关文章推荐
- 为什么要用大写的那些类型修饰符?如INT与int
- 复杂类型(除int,uint,number,string,bool)比较运行情况
- bool类型为什么可以当做int
- 为什么int类型的最大值是2^31-1 ?
- 关于C语言中为什么getchar的返回类型不是char而是int的说明
- WCF客户端引用带有 int bool 类型的方法时,会自动加上一个Specified参数的 解决方法 Web Reference for a WCF Service has Extra “IdSpecified” Parameter -摘自网络
- Java反射----Field的getModifiers()方法返回int类型值表示该字段的修饰符
- Java中字节流和字符流的read()方法为什么返回的值是int类型
- BOOL,int,float,指针类型的变量a 与“零”的比较语句
- 为什么操作int 类型的指令要快于操作short 的,却可能慢于操作char 的
- 分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句
- C++中为什么使用bool类型
- 说说C语言与C++的有些区别(一)----为什么C语言没有BOOL类型,而C++有;枚举类型的区别;左值
- int类型 10到99 阶乘结果为什么是0
- 【转】关于int范围中负数最小值的绝对值比整数最大值大初学C,问题源自:为什么C中的int类型(16位)的下溢下限为-32768而上溢上限却是32767。 首先说吧,32767很容易理解,32767
- 为什么int 类型的数据大小为-128~127,其实很简单
- C# 中WebService返回类型(string,int,bool,DataSet,class实体类)示例
- 为什么int类型(16位)的下溢下限为-32768而上溢上限却是32767
- C# bool类型转化为字符串首字母会大写
- java.io.FileInputStream.read()的返回值类型为什么是int而不是byte