コード: 全て選択
const int XXX = 500
必要とあればその都度かけば良いものではないのでしょうか?(今回だったら500って書けば良い)
constを使う意味をサンプルコード共に教えてくださるとありがたいです。
コード: 全て選択
const int XXX = 500
まさにマジックナンバーを避けるために定数を定義するんです。まるまる6734 さんが書きました:constを使用して定数として定義するプログラムを目にするのですが、なぜ定義するのでしょうか?
500という値を変更したい時、プログラム中にある500を全部探し出して変更するのでしょうか?(まあエディタがやってくれるので手間はかかりませんが)まるまる6734 さんが書きました:必要とあればその都度かけば良いものではないのでしょうか?(今回だったら500って書けば良い)
通常は意味のある変数名にして、コメントをつけると思うのだが...まるまる6734 さんが書きました:コード: 全て選択
const int XXX = 500
コード: 全て選択
//温度センサー制御上限値
const float MaxTemperature = 95.0;
コード: 全て選択
#ifdef _AFXDLL
#define DECLARE_DYNAMIC(class_name) \
protected: \
static CRuntimeClass* PASCAL _GetBaseClass(); \
public: \
static const CRuntimeClass class##class_name; \
static CRuntimeClass* PASCAL GetThisClass(); \
virtual CRuntimeClass* GetRuntimeClass() const; \
#define _DECLARE_DYNAMIC(class_name) \
protected: \
static CRuntimeClass* PASCAL _GetBaseClass(); \
public: \
static CRuntimeClass class##class_name; \
static CRuntimeClass* PASCAL GetThisClass(); \
virtual CRuntimeClass* GetRuntimeClass() const; \
#else
#define DECLARE_DYNAMIC(class_name) \
public: \
static const CRuntimeClass class##class_name; \
virtual CRuntimeClass* GetRuntimeClass() const; \
#define _DECLARE_DYNAMIC(class_name) \
public: \
static CRuntimeClass class##class_name; \
virtual CRuntimeClass* GetRuntimeClass() const; \
#endif
コード: 全て選択
int XXX = 500;
char buf[XXX]; // C:*, C++:エラー
const int XXX = 500;
char buf[XXX]; // C:*, C++:OK
#define XXX 500
char buf[XXX]; // C:OK, C++:OK
*: C99 の可変長配列をコンパイラが実装していると OK、そうでないとエラー