C++ Builder可以编译所有符合ANSI/ISO标准的原代码,支持最新ANSI C++/C语言特征:模板、例外、运行、以及Namespaces等,下面着重说明下在Vista系统中C++ Builder的开发工作。
注意:当然,这里所说的让位,是指RAD;这里所提的“VS2005及以后的版本在Vista下将只支持C++托管代码的开发”来自6月8号在西安参加CodeGear的新品发布会时范路先生所说。
个人很喜欢C#,一方面类库强大,另一方面因为C#的架构师Anders Hejlsberg(我很佩服,呵呵)。不管MS有多少不好,基于MS和Windows的强大,掌握MS阵营的一种或多种工具很是很有必要的(我只是开源和Linux的拥护者,非常不狂热),所以我选择了C#。扯远了。
C++ Builder2007支持Vista下的原生代码开发,也只支持这种方式。但是不要以为原生代码实现不了Vista的特殊效果。范路先生说了。这是C++ Builder及以后的版本的定位,也因为MS将放弃VC++在Vista下的原生代码开发,将会给予C++ Builder一条生路(同眼下相比)。
忘了Delphi是什么定位了,可能范路先生没有说。难道还是双管齐下?不知道在Vista时代C++ Builder能否重振雄风:)更有可能的是三国时代(上一次是Borland、MS和赛门铁克)重现--在原生代码领域?托管还是原生,每个人的偏爱都不一样--如果你不喜欢C++的话。#t#
不在此列,哈哈--如果不出意外(喜欢C++ && 原生代码 && RAD的大有人在;来分C++原生代码RAD的公司姗姗来迟),MS就把一部分江山拱手相让了;这样也好,竞争对手也是一种推动力。C++ Builder生成新的控制台应用程序时会自动加上这条语句。这在你所用的程序中不是必须的,所以代码清单中将其省略。无论有无这条语句,程序运行结果是一致的。
分析输出结果为:x=32767 x=32768如果用int数据类型,则不会有这个问题,因为int数据类型的取值范围在正向20亿之间,一般不会有绕回的问题。但这时程序可能会稍大一些,因为int需要4字节存储,而short只需要2字节存储。
对于大多数应用程序,这个差别是不显著的。前面介绍了自动类型换算。有时C++无法进行换算,这时可能在编译器中产生编译错误,说Cannot convert from x to y(无法从x换算到Y)。
编译器也可能警告说Conversion might lose significant digits(换算可能丢失显著位)。提示 编译器警告应当作编译器错误。因为它表明出了错误。我们应努力生成无警告的编译。有时警告无法避免,但一定要认真检查所有警告。应充分了解警告的原因并尽量予以纠正。
说明 这里介绍的字串操作是C语言中的字串处理方法。大多数C++编译器提供了cstring类,可以简化字串的处理(C++ Builder的Visual构件库中有个AnsiString类,可以处理字串操作。
C++ Builder联机帮助中详细介绍了AnsiString类)。尽管C语言中的字串处理方法比较麻烦,但并不过时,C++编程人员经常在使用cstring类和AnsiString类等字串类的同时使用C语言中的字串处理方法。这里不想对表中的每个函数进行举例说明,只想举两个最常用的函数。strcpy()函数将一个字串复制到另一字串中,源字串可以是变量或直接字串。例如下列代码:
- //set up a string to hold 29 characters
- char buff[30];
- //copy a string literal to the buffer
- strcpy (buff,"This is a test.");//display it
- cout << buff << end;
- //initialize a second string buffer
- char buff2[]="A second string.";
- //copy the contents of this string to the first buffer
- strcpy (buff,buff2);
- cout << buff << end1;