预处理

From Apache OpenOffice Wiki
Jump to: navigation, search


与 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.IllegalArgumentExceptioncom.sun.star.connection.ConnectionSetupExceptioncom.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).
Personal tools
In other languages