使用 -qtempinc 编译器选项
注: 此部分不适用于由 xlclang/xlclang + +调用的 IBM® XL C/C++ for AIX®的基于 Clang 的前端。
要使用 -qtempinc,必须按如下所示构造应用程序:
- 在扩展名为
.h的模板 declare 文件中声明类模板和函数模板。 - 对于每个模板声明,创建一个模板 定义 文件。 此文件必须具有与模板声明文件相同的文件名以及扩展名
.c或.t,或者必须在 #pragma implementation 伪指令中指定该名称。 对于类模板,实现文件定义成员函数和静态数据成员。 对于函数模板,实现文件定义函数。 - 在源程序中,为每个模板声明文件指定
#include伪指令。 - (可选) 要确保代码适用于 -qtempinc 和 -qnotempinc 编译,请在每个模板声明文件中有条件地包含相应的模板实现文件 (如果 未 定义 __TEMPINC__ 宏)。 (此宏是在您使用 -qtempinc 编译选项时自动定义的。) 这将生成以下结果:
- 每当使用 -qnotempinc进行编译时,都会包含模板实现文件。
- 每当使用 -qtempinc进行编译时,编译器都不包含模板实现文件。 相反,编译器会在首次需要特定实例化时查找与模板实现文件和扩展名
.c同名的文件。 如果编译器随后需要相同的实例化,那么它将使用存储在模板 include 目录中的副本。
注意:
- 仅对旧应用程序使用 -qtempinc 选项。
- 使用 -qtemplateregistry,这将提供比 -qtempinc 更多的优点,并且不需要修改源文件。 有关详细信息,请参阅 XL C/C++ 编译器参考中的 -qtemplateregistry (仅限 C + +) 。