要使用一样工具,首先肯定是进行环境搭建了。
需要安装 ActivePerl 5.6.1.635,因为有些工具需要使用perl文件,这些工具同 ActiveState安装有关,所以在安装perl的时候确保该选项被选中。在安装perl之前应该安装SDK,个人经验。
JDK 1.5.0版本以上是需要的,在SDK之前应安装carbide。
carbide和S60SDK要安装在同一个盘符下,而且workspace也应在有SDK的目录下,同样个人经验。
mmp文件是项目定义文件,主要是source或是lib等文件定义;以平台无关和编译器无关的方法指定项目组件的属性。
bld.inf文件是工程引导文件,是一个脚本,可以包含多个mmp文件,指导编译环境工作。
开始正式接触编程:
Integer : TInt,TUint 至少32位;TInt8~TInt64.
Float-point:TReal,TReal64 都是标准64位;TReal32
TBool:TTure 和TFalse
TText:16位宽度,TText8:8位字符
TChar:32位宽度可以存储所有unicode字符。
TAny:TAny* 等价于void*
*和&应该紧挨类型旁边,比如TInt* intRef;而不应该是TInt *intRef;
命名规则:
不能有下划线,类名和函数名首字母大写;
局部变量以小写字母开头;
函数参数一小写字母a开头;
成员变量以小写字母i开头;
全局变量用大写字母开头,但是应尽量避免;
函数用动词,变量用名词;
getter 函数命名为VariableName() ;setter 函数命名为SetVariableName();
比如
class ClassName{};
TInt localVariable;
TInt iMemberVariable;
void DoSomethingL(TInt aFunctionAttr);
关键字与圆括号之间有一个空格: if ()而不能写成if()
函数名与圆括号之间不应有空格:DoSomeThing()而不能写成DoSomething ()
圆括号内应有一个空格,除非是():if (())可以连续,但是if ( value == KMaxValue )应该有空格在value和圆括号间
使用4个空格代替tab键
if ( value <= KMaxValue )
{ // use parentheses even if there’s just one line
DoSomething( value )
}
T classes:
T开头,无析构函数,类似struct,能包含指针和handles,但是不用delete;static class命名无前缀,直接为StaticClass;
C classes:
C开头,有虚析构函数继承于CBase,需要动态内存分配,需要delete,只有C类可用new创建,从CBase私有继承赋值运算符和拷贝构造函数,C类以NULL填充,内存分配和
construction topics are covered in next session,这句不是很理解,以后再说。
R classes:
R开头,资源文件,定义handle,没有通用的base class,没有通用界面。使用适当方法打开或关闭,基本不用用户自定义,比如
RTimer, RFile, RCall等。
M classes:
M开头,界面类,类似JAVA,虚方法,无成员变量,没有构造和析构函数或者类似等号那种重载符号。多重继承,使用纯虚方法不是必须的,常用于生效一个回调界面来获取系统事件的通知。
enum中的值以E开头:
class TExampleClass
{
public:
enum TShape
{
EShapeRound,
EShapeSquare
};
};
TExampleClass::TShape shape = TExampleClass::EShapeSquare;
常量用K开头:应尽量定义在cpp文件里。
const TInt KMaxLength = 5;
dynamic_cast不能在symbian中使用;
static_cast能被用于基础类型之间以及从基类到子类;
reinterpret_cast能被用于指针之间以及整数和指针之间;
Template:
尽量避免使用,因为要拷贝大量代码。
首先定义基类包含所有代码;
TAny*
被使用;
再定义模板类使用T*参数作为子类;
创建内联函数调用父类函数,转换成T*;
class CTemplateClass<T> : public CBaseClass
{
inline const T& Function() const
{
return (*((const T*)CBaseClass::Function()));
}
};