预处理
与 C++ 编译程序一样,UNOIDL 编译程序 idlc 只能使用已知的类型。idlc 可以识别 15 种简单类型,例如布尔、整数或字符串(下文将概要介绍这些类型)。无论何时,要在 idl 文件中使用简单类型以外的类型,都必须首先提供该类型的声明。例如,要从 XInterface 接口导出一个接口,就要包括相应的 XInterface.idl
文件。“包括”意味着通知预处理程序读取给定文件并执行文件中的指令。
// searched in include path given in -I parameter #include <com/sun/star/uno/XInterface.idl> // searched in current path, then in include path #include "com/sun/star/uno/XInterface.idl"
包括 idl 文件的方法有两种。对于尖括号中的文件名,在使用它的 -I 选项传送到 idlc 的包括路径中搜索;对于双引号中的文件名,首先在当前路径中搜索,然后在包括路径中搜索。
上述 XUnoUrlResolver
定义包括 com.sun.star.uno.XInterface 和由 resolve()
方法引发的三个异常:com.sun.star.lang.IllegalArgumentException、
com.sun.star.connection.ConnectionSetupException 和
com.sun.star.connection.NoConnectException。
在 OpenOffice.org 2.0 中,不再需要明确说明接口类型是否是从 XInterface
导出的-如果接口类型不是从其他接口类型导出的,则暗示它是从 XInterface
接口导出的。但是,即使是在这种情况下,明确包括 XInterface.idl
文件也是非常重要的。
另外,要避免收到因重新定义已包括的类型而产生的警告,可以使用 #ifndef
和 #define
,如上所示。请注意:XUnoUrlResolver
的整个定义是如何包含在 #ifndef 和 #endif 之间的。预处理程序所做的第一件事是检查是否已定义标记 __com_sun_star_bridge_XUnoUrlResolver_idl__
。如果
未定义,则定义标记,idlc 继续处理 XUnoUrlResolver
的定义。
请遵守 OpenOffice.org 开发者使用的包括标记的命名模式:使用要包括的 idl 文件的文件名,在宏的起始处和结尾处添加双下划线,并用下划线替换所有的斜线和点。
如果需要 idlc 支持的其他预处理指令的更多信息,请参阅 Bjarne Stroustrup 所著的 The C++ Programming Language。
Content on this page is licensed under the Public Documentation License (PDL). |