最近一直在做lib9引擎在bada下的版本,lib9最开始是j2me版本,使用java语言,后面移植到了Android版本,由于也是采用java语言,所以这个移植没费什么劲儿,相对来说还是比较容易的,可是最近移植到C/C++环境(bada平台) 感觉就需要更多的功能要做了,下面是我移植过程中的体会
1:定义类成员变量的初始化方式不同
在java的类中可以在定义成员变量的时候就初始化变量同时指定变量的访问方式,但是c++中不行
比如:
class A{
A(){}
public int i=5;
}
在类A中定义了成员变量i并初始化为5且指定访问权限为public,但是C++中就感觉很不方便了,所以在移植的过程中我们定义了一个 defaultInit函数,专门用来初始化变量的
2:相互包含问题
在c++中 常常存在与相互包含的问题,比如:类A要引用B,但是B同时又要引用A,如果类A,B分别定义在两个不同的文件中,这个时候就存在相互包含的问题了,而java中不存在
解决方式:
在头文件中只声明,在cpp文件中定义
#include尽量只在cpp文件中
#include中引用的变量使用前向引导声明
3:构造与析构函数和垃圾收集
4:程序语句执行顺序的副作用
在java中我常常这样用
int i = ((arr[off++] & 0xFF) + ((arr[off++] & 0xFF) << 8));
上面的一句在C++中有问题,往往达不到希望的效果,需要使用下面的语句替换
int i = ((arr[off] & 0xFF) + ((arr[off + 1] & 0xFF) << 8));
off+=2;
分享到:
相关推荐
在本项目"Java_CS.rar_ java cs_java CS_java c++_即时聊天"中,主要涉及的是使用Java编程语言实现一个跨平台的即时聊天系统。这个系统不仅支持Java平台,还可能涉及C++语言的实现,这表明可能有部分组件或接口是用...
JNI允许Java代码调用C/C++函数,反之亦然。在JNI中,通过`GetPrimitiveArrayCritical`和`ReleasePrimitiveArrayCritical`方法可以获取Java数组的原始内存地址,实现与本地代码的高效交互。此外,JNI还能获取Java...
本篇文章将详细讲解如何使用Java和FFmpeg库来实现`MP4`到`M3U8`的转换。 1. FFmpeg介绍: FFmpeg是一款强大的开源跨平台多媒体处理工具,它包含了编解码器、音视频转换、流媒体处理等功能。在Java中,我们可以使用...
本文将详细介绍一个基于Python实现的高级代码补全工具,该工具专注于为Python、Java和C++等编程语言提供高质量的代码补全功能。 首先,我们要理解什么是代码补全。代码补全,也被称为自动完成或智能提示,是一种...
此外,还可以使用JavaFX或Swing组件来创建自定义的动画光标,但这通常需要将ani转换为其他Java支持的格式,如.gif或.java类文件。 在编程中使用ani动态光标时,需要注意以下几个关键点: 1. 资源管理:确保在不再...
C++和Java是两种广泛使用的编程语言,它们各自拥有独特的特性和适用场景。C++起源于C语言,强调性能和底层控制,而Java则是一个完全面向...无论是选择C++还是Java,关键在于掌握其核心概念,并灵活运用到实际工作中。
无论哪种实现,都需要确保计算结果的准确性和效率,因为这直接影响到用户的体验。 总的来说,日出日落时间计算是结合了天文学和编程技术的挑战。这个压缩包提供的工具类为开发者提供了便利,减少了重复工作,同时也...
用户在解压后,可能需要编译(如果使用的是.java源文件)或运行(如果提供的是可执行的.jar文件)来体验源代码转换的功能。 关于这个源代码转换程序的可能实现,通常会涉及以下几个关键知识点: 1. **语法解析**:...
Java到EXE转换是将Java应用程序转换为可执行的Windows程序(.exe文件)的过程,以便用户无需安装Java运行环境就能直接运行程序。这通常通过使用特定的编译器或包装工具来实现,这些工具可以将Java字节码转换为本地...
AStyle(Artistic Style)是一款强大的源代码格式化、美化工具,尤其在C、C++和Java编程语言领域广泛应用。它旨在提高代码的可读性和一致性,帮助程序员统一团队代码风格,提高代码审查效率。AStyle的2.03版本对原有...
NativeJ Professional Edition V4.8.3是一款专业的Java到C++转换器,它能够将Java程序转化为高效的本地二进制可执行文件,从而提高运行效率和兼容性。以下是这个工具的一些关键特点和知识点: 1. **代码转换**:...
- **语言起源**:C#作为较新的面向对象编程(OOP)语言,它在设计时充分吸收了C++和Java的优点,旨在提供一种更为现代且易用的编程体验。 - **共性与差异**:虽然C#、C++和Java有许多共同之处,它们的语法结构和...
3. **Android Studio**:虽然支持Java和C++的混合开发,但在C++方面的开发体验可能不如专门的IDE,但其集成的NDK工具集可以方便地管理C++代码。 4. **Eclipse**:虽然不是专为Android开发设计,但通过插件也可支持C...
数独是一种广受欢迎的逻辑推理游戏,它通过填数字的方式让玩家体验到解谜的乐趣。在这个“C++数独小游戏”中,我们将探讨如何利用C++这一强大编程语言来实现一个功能完备、用户友好的数独游戏程序。 一、C++基础与...
8. **错误处理**:设计良好的错误处理机制,如超时、同步问题和无效的OTP输入,以提高用户体验。 通过理解和实现这些知识点,你可以创建一个强大且安全的一次性口令身份认证系统,为用户提供额外的安全保障。在C++...
在这个项目中,编译后的Java源代码会被转换成.class文件,然后打包到一个JAR文件中,以便于分发和执行。JAR文件可以作为一个可执行程序运行,也可以用于库的封装和分发。 4. **编译文件**:在Java中,源代码需要...
为了实现这个功能,开发人员可能使用了编程语言如Python、Java或C++,并结合了TTS库、音频处理库(如FFmpeg)以及可能的GUI框架(如Qt或wxPython)来构建用户界面。他们可能还需要处理一些细节问题,例如音量控制、...
- **类型转换**:Java的类型转换更加安全,需要显式转换,并且在转换过程中会检查类型兼容性。 - **头文件**:Java使用import导入类库,没有像C/C++那样的头文件。 - **结构和联合**:Java没有结构体和联合体,但...