Google
 
Web itpro-blogger.blogspot.com
日曜日, 4月 29, 2007

[C++]変数・定数

▼質問
enum E_ERROR { ERR_00 = 0, ERR_01 = -1, ERR_02= -2, ERR_03 = -3 };
を「E_ERROR::ERR_00」のように使用すると下記の警告が出る。
「警告 1 warning C4482: 非標準の拡張機能が使用されています: enum 'E_ERROR' が限定名で使用されます c:\パス\ファイル名.cpp 行番号 」

▼回答
「E_ERROR::」を外すと問題ない?下記の様にして呼べば良さそうである。

・定義の記述
namespace NS_DEF
{
enum { ERR_00 = 0, ERR_01 = -1, ERR_02= -2, ERR_03 = -3 };
}

・呼び方
NS_DEF::ERR_00

・参考
namespace NS_DEF
{
#define NUM 100 // NS_DEF::NUMにはならない。
}
マクロ定義は名前空間に含めることができない。

■参考サイト
●C++編(言語解説) 第18章 名前空間
http://www.geocities.jp/ky_webid/cpp/language/018.html

定数の定義にはconstを使う方が優れている。理由は、 #defineによる定数定義と違い、
constの場合はデータ型がはっきりしているからだそうだ。

■参考サイト
C++ reference
http://www.asahi-net.or.jp/~wv7y-kmr/memo/old/cpp_bas.html






Comments: コメントを投稿

<< Home

This page is powered by Blogger. Isn't yours?