JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.3: C++ ユーザーズガイド     Oracle Solaris Studio 12.3 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

パート I C++ コンパイラ

1.  C++ コンパイラの紹介

2.  C++ コンパイラの使用方法

3.  C++ コンパイラオプションの使い方

パート II 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.  マルチスレッドプログラムの構築

パート III ライブラリ

11.  ライブラリの使用

12.  C++ 標準ライブラリの使用

13.  従来の iostream ライブラリの使用

14.  ライブラリの構築

パート IV 付録

A.  C++ コンパイラオプション

B.  プラグマ

用語集

索引

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__ 属性の詳細

struct または union の型定義に添付されるこの属性は、必要なメモリーを最小限に抑えるために、構造体または共用体の各メンバー (幅が 0 のビットフィールドを除く) の配置を指定します。enum 定義に添付する場合は、__packed__ は最小の整数型を使用すべきことを示します。

struct および union 型に対してこの属性を指定する場合は、構造体または共用体の各メンバーに対して 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;
};

この属性を指定できるのは、enumstruct、または union の定義のみです。列挙型、構造体、共用体のいずれも定義しない typedef に対して、この属性は指定できません。