Symbian C++和标准C++的语法有什么不同?

3
据说Symbian C++有自己的方言,能否有人列出确切的不同之处?

从技术上讲,每个编译器都是C++的自己的方言。g++与vc++不同,它们各自拥有标准之外的特性,并且每个编译器可能已经以不同的方式实现了完整的标准。 - xenoterracide
@xenoterracide:没错,但是Symbian/C++曾经与标准C++相差甚远。好吧,“标准C++”实现通常缺少一些细节,例如export或模板中正确的名称解析。但是在某个时候,Symbian/C++没有异常。或者类型作为模板参数(仅限整数)。或任何标准头文件。它是基于一个预标准版本的C++而构建的。与试图实现不完全的C++不可比较。 - Steve Jessop
4个回答

5
一个很好的资源是Symbian C++基础书籍,可通过Symbian Foundation网站获得。
Symbian C++方言与标准C++不同的主要方式有:
  • 异常不直接使用,即在Symbian C++中不应使用“throw”。相反,Symbian有自己的异常形式,称为leaves。这归因于Symbian创建时编译器不广泛支持异常。
  • 不能从C++构造函数中抛出异常,因此无法使用标准RAII技术。相反,Symbian使用两阶段构造习惯用语和一个称为清理堆栈的机制。有关更多详细信息,请参见Symbian Foundation网站here

就标准库而言,现在已经有了STL的移植版本可供Symbian使用,因此所有标准容器和算法都可用。然而,这是最近的发展,因此操作系统具有自己的字符串、数组、哈希等实用类。

作为Teknolog提到的,一个重要的最新进展是将Qt移植到Symbian OS上。从Symbian^4开始,整个UI都将使用Qt重新编写,这意味着Qt将成为本地应用程序开发工具包。这意味着,虽然Symbian C++仍将用于OS中的中间件和低级开发,但应用程序开发人员将改用Qt,因此不需要了解Symbian C++的方言。我在回答Qt或Symbian C++问题时描述了这一点。

2

找到了一些有用的链接...

  1. PDF文档,描述了S60平台与ANSI C++之间的差异
  2. 教程,列出了变量类型的一些差异
  3. 论坛讨论关于此主题的内容

1

Symbian C++并不是与“普通”的C++不同的语言,但它有许多Symbian特定的约定。


1

如今,“Symbian C++”这个术语也用于区分传统的Symbian C++/S60开发和更现代的Qt开发堆栈。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接