Top > C++ > スクリプト > 言語仕様 > モジュール

モジュール Edit

概要 Edit

  • モジュール == 1つのソースファイル
  • モジュールには1つのシンボルを定義できる
Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
 
 
 
-
|
!
module Project.A; // Project名前空間のAという名前のモジュールをこのソースファイルで定義することを宣言
 
pod A // モジュールの名前と同じ必要がある
{
    int b;
};

モジュール宣言 - module Edit

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
ModuleDecl:
    "module" ModulePath ";"
    "prototype" "module" ModulePath ";"
 
ModulePath:
    NamespacePath "." ModuleName
 
NamespacePath:
    Namespace
    Namespace "." NamespacePath
 
Namespace:
    Identifier
 
ModuleName:
    Identifier
  • ソースファイルの何よりも先に記述するキーワード
  • 1階層以上の名前空間とこのソースファイルで定義する型の名前を続けて記述する
    Everything is expanded.Everything is shortened.
      1
      2
    
     
     
    
    module Hoge.Foo; // Hoge名前空間のFooという型をこのソースで記述します
    module Foo; // エラー:名前空間がない
    
  • プロトタイプモジュールにはprototypeを前に付ける。(プロトタイプモジュールの項を参照)
  • プロトタイプモジュールはpublicな定数・変数・関数・ユーザー定義型を宣言する。
  • プロトタイプモジュールの関数の実装や定数の値はランタイムで設定される。
Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 
 
 
-
|
|
|
|
!
 
prototype module Project.Vector3; // プロトタイプモジュールの宣言
 
pod Vector3
{
   float x;
   float y;
   float z;
   float length()const; // プロトタイプモジュールなので関数の実体は
};

外部モジュール宣言 - import/using Edit

  • 外部のモジュールを使う宣言
  • importキーワードを使うと名前空間付きのフルパスで記述する必要がある。
  • usingキーワードを使うと名前空間を省略することができる
Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 
 
 
 
 
-
|
|
!
 
module Project.A;
using Project.B;
import Project.C;
 
class A
{
  B b; // usingを使ったのでProject.Bの"Project."の部分が省略できる
  Project.C c; // importを使ったので省略ができない
};

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes
Last-modified: (4712d)