oracle 类库,11.4 使用类库 (Oracle Solaris Studio 12.2:C++ 用户指南)

11.4 使用类库

通常,使用类库分两个步骤:

在源码中包括适当的头文件。

将程序与目标库链接。

11.4.1 iostream 库

C++ 编译器提供两种 iostream 实现:

传统 iostream。该术语是指 C++ 4.0、4.0.1、4.1 和 4.2 编译器以及早期基于 cfront 的 3.0.1 编译器附带的 iostream 库。没有用于此库的标准。在兼容模式下,该库是 libC 的一部分,在标准模式下,libiostream 中也有该库。

标准 iostream。这是 C++ 标准库 libCstd 的一部分,仅用于标准模式下。该库与传统 iostream 库的二进制和源码都不兼容。

如果已有 C++ 源,那么代码可能象以下示例一样使用传统 iostream。

// file prog1.cc

#include

int main() {

cout << "Hello, world!" << endl;

return 0;

}

以下命令在兼容模式下编译 prog1.cc,并将其链接到名为 prog1 的可执行程序中。传统 iostream 库是 libC 的一部分,兼容模式下缺省链接该库。

example% CC -compat prog1.cc -o prog1

下一个示例使用标准 iostream。

// file prog2.cc

#include

int main() {

std::cout << "Hello, world!" << std::endl;

return 0;

}

以下命令编译 prog2.cc 并将其链接到名为 prog2 的可执行程序中。该程序在标准模式下编译,且缺省链接包括标准 iostream 库的 libCstd。

example% CC prog2.cc -o prog2

有关编译模式的完整讨论,请参见《C++ 迁移指南》。

11.4.2 complex 库

标准库提供了模板化的 complex 库,该库与 C++ 4.2 编译器提供的 complex 库类似。如果在标准模式下编译,必须使用 而非 。不能在兼容模式下使用 。

在兼容模式下,必须在链接时显式请求 complex 库。在标准模式下,complex 库包括在 libCstd 中,缺省情况下链接该库。

标准模式下,没有 complex.h 头文件。在 C++ 4.2 中,"complex" 是类名称,但在标准 C++ 中,"complex" 是模板名称。不可能提供可使旧的代码不加修改就可工作的 typedef。因此,为使用复数的 4.2 版编写的代码需要某些简单的编辑,以便使用标准库。例如,以下代码是为 4.2 版编写的,并将在兼容模式下编译。

// file ex1.cc (compatibility mode)

#include

#include

int main()

{

complex x(3,3), y(4,4);

complex z = x * y;

cout << "x=" << x << ", y=" << y << ", z=" << z << endl;

}

以下示例在兼容模式下编译并链接 ex1.cc,然后执行该程序。

example% CC -compat ex1.cc -library=complex

example% a.out

x=(3, 3), y=(4, 4), z=(0, 24)

下面将 ex1.cc 重写为 ex2.cc 以在标准模式下编译:

// file ex2.cc (ex1.cc rewritten for standard mode)

#include

#include

using std::complex;

int main()

{

complex x(3,3), y(4,4);

complex z = x * y;

std::cout << "x=" << x << ", y=" << y << ", z=" << z <<

std::endl;

}

以下示例在标准模式下编译并链接重写的 ex2.cc,然后执行该程序。

% CC ex2.cc

% a.out

x=(3,3), y=(4,4), z=(0,24)

关于使用复数运算库的更多信息,请参见表 13–4。

11.4.3 链接 C++ 库

下表列出了链接 C++ 库的编译器选项。有关更多信息,请参见A.2.49 -library=l[,l...]。

表 11–2 链接 C++ 库的编译器选项库编译模式选项

传统 iostream–compat=4

–compat=5不需要

-library=iostream

complex–compat=4

-compat=5-library=complex

不需要

Tools.h++ 版本 7–compat=4

–compat=5-library=rwtools7

-library=rwtools7,iostream

-library=rwtools7_std

Tools.h++ 版本 7 调试–compat=4

–compat=5-library=rwtools7_dbg

-library=rwtools7_dbg,iostream

-library=rwtools7_std_dbg

垃圾收集–compat=4

–compat=5-library=gc

-library=gc

STLport 版本 4–compat=5-library=stlport4

STLport 版本 4 调试–compat=5-library=stlport4_dbg

Apache stdcxx 版本 4-compat=5-library=stdcxx4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值