关于跨平台问题,什么是ByteCode

不论是C还是C++
都会有依赖平台与实现的不同
比如int的大小
由于C以及C++库功能基本都是最简化的
所以基本没法开发什么比较有用处的可移植代码.
比如GUI的不同,socket实现的不同等等
都制约了C++的可移植性
如果你要写一个完全可以跨平台编译的代码
只能依靠标准库来写,那样这个程序的功能就一定非常有限.
当然也有一些跨平台的库可以使用.
比如GUI方面的wxWidgets等等

不过尽管如此.我们还是可以做一些工作来方便移植工作
不要假想平台的硬件环境,
如果你要做一些对字节操作或者位操作的内容
最好注意big   endian以及small   endian问题
不同的平台实现不同.
不要假想字节长度
int的大小是32,但是不同实现里面可能有不同的长度.
这依赖实现,虽然大多数的实现都使用几乎相同的标准
尽量不要操作底层的内容
基于上面两条,我们可以得出可移植性最高的代码
应该是那些不对位或者字节进行直接操作的.
不对指针内容进行修改的,大多调用标准库函数的.
不使用高级模板功能的代码

 

跨平台当然要注意避免使用依赖系统的操作咯:
1.   基本类型的长度以及相对这些类型的操作,如wchar_t。
2.   字符操作,特别是汉字类的宽字符。
3.   IO操作
另外不同编译器对C++的实现是不同的,这就要编译一下试验一下,不过这种问题都很容易改的!



1,什么是Bytecode
C/C++编译器把源代码编译成汇编代码,Java编译器把Java源代码编译成字节码bytecode。
Java跨平台其实就是基于相同的bytecode规范做不同平台的虚拟机,我们的Java程序编译成bytecode后就可以在不同平台跑了。
.net框架有IL(intermediate language),汇编是C/C++程序的中间表达方式,而bytecode可以说是Java平台的中间语言。
了解Java字节码知识对debugging、performance tuning以及做一些高级语言扩展或框架很有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值