JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.3:C++ 用户指南     Oracle Solaris Studio 12.3 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

第 1 部分C++ 编译器

1.  C++ 编译器

2.  使用 C++ 编译器

3.  使用 C++ 编译器选项

第 2 部分编写 C++ 程序

4.  语言扩展

4.1 链接程序作用域

4.1.1 与 Microsoft Windows 兼容

4.2 线程局部存储

4.3 用限制较少的虚函数覆盖

4.4 对 enum 类型和变量进行前向声明

4.5 使用不完整 enum 类型

4.6 将 enum 名称作为作用域限定符

4.7 使用匿名 struct 声明

4.8 传递匿名类实例的地址

4.9 将静态名称空间作用域函数声明为类友元

4.10 将预定义 __func__ 符号用于函数名

4.11 支持的属性

4.11.1 __packed__ 属性详细信息

4.12 对 Intel MMX 和扩展的 x86 平台内部函数的编译器支持

5.  程序组织

6.  创建和使用模板

7.  编译模板

8.  异常处理

9.  改善程序性能

10.  生成多线程程序

第 3 部分库

11.  使用库

12.  使用 C++ 标准库

13.  使用传统 iostream

14.  生成库

第 4 部分附录

A.  C++ 编译器选项

B.  Pragma

词汇表

索引

4.11 支持的属性

支持以下属性:为了实现兼容,编译器会实现由 __attribute__ (( keyword))[[keyword]] 调用的以下属性。还接受在双下划线内拼写的属性关键字 __keyword__

aligned

大致等效于 #pragma align。生成警告,且在用于可变长度数组时会被忽略。

always_inline

等效于 #pragma inline-xinline

const

等效于 #pragma no_side_effect

constructor

等效于 #pragma init

destructor

等效于 #pragma fini

malloc

等效于 #pragma returns_new_memory

mode

(无等效子句)

noinline

等效于 #pragma no_inline-xinline

noreturn

等效于 #pragma does_not_return

pure

等效于 #pragma does_not_write_global_data

packed

等效于 #pragma pack()。请参见以下详细信息。

returns_twice

等效于 #pragma unknown_control_flow

strong

接受它是为了与 g++ 兼容,但不起任何作用。g++ 文档建议不要使用该属性。

vector_size

指示变量或类型名称(使用 typedef 创建)表示一个向量。

visibility

提供链接程序作用域。(请参见A.2.130 -xldscope={v})语法为:__attribute__((visibility(“visibility-type ”))),其中 visibility-type 是以下选项之一:

default

__global 链接程序作用域相同

hidden

__hidden 链接程序作用域相同

internal

__symbolic 链接程序作用域相同

weak

等效于 #pragma weak

4.11.1 __packed__ 属性详细信息

此属性附加于 structunion 类型定义中,它指定结构或联合的每个成员(除了零宽度位字段)的放置,以最大限度地减小所需内存。附加于 enum 定义时,__packed__ 指示应使用最小的整数类型。

structunion 类型指定此属性等效于对每个结构或联合成员指定 packed 属性。

在以下示例中,struct my_packed_struct 的成员紧紧打包在一起,但其成员的内部布局并不打包。为此,还需要打包 struct my_unpacked_struct

struct my_unpacked_struct
{
   char c;
   int i;
;
              
struct __attribute__ ((__packed__)) my_packed_struct
{
   char c;
   int  i;
   struct my_unpacked_struct s;
};

只能对 enumstructunion 的定义指定此属性,不能对未定义枚举类型、结构或联合的 typedef 指定此属性。