1.1.7 Usage of the scoping resolution operator

DS-5 では、:: (スコープ解像度) 演算子は、スコープ範囲外の変数名または関数名に対するグローバル識別子です。式エバリュエータは、スコープ解決、メンバ、およびメンバポインタ演算子を使用したスコーピング操作をサポートします。スコーピング操作は、イメージ、ファイル、名前空間、またはクラス内で、変数や関数の参照に使用できます。

下の demo.c を使用して作成した image.axf を参照する例を以下に示します。

static int FILE_STATIC_VARIABLE = 20;
class OuterClass
{
	public:
	OuterClass(int i)
	{
		value = i;
	}

	class InnerClass
	{
		public:
		int demoFunction()
		{
			return 25;
		}
	};
	void increment()
	{
		value++;
	}
	int value;
};

namespace NAME_SPACE_OUTER
{
	const int TEST_VAR = 20;
	namespace NAME_SPACE_INNER
	{
		const int TEST_VAR = 19;
		int nameSpaceFoo ()
		{
			return 60;
		}
	};
};

int main()
{
	OuterClass oc(14);
	OuterClass *ptr_oc = &oc;

	ptr_oc->increment();
}

このサンプルコードは、以下のいずれかの式を使用して照会することができます。

OuterClass::InnerClass::demoFunction
"image.axf"::main
"image.axf"::"demo.c"::FILE_STATIC_VARIABLE
"demo.c"::FILE_STATIC_VARIABLE
NAME_SPACE_OUTER::TEST_VAR
NAME_SPACE_OUTER::NAME_SPACE_INNER::TEST_VAR

ptr_oc->increment() にブレークポイントを設定してそこまで実行した場合、以下の式を使用してアウタークラスのインスタンスを照会することもできます。

oc.value
ptr_oc->value
非機密扱いPDF file icon PDF 版ARM DUI0452ZJ
Copyright © 2010–2016 ARM.All rights reserved.