たくさんの文字列定数
#define FOO "This is foo" #define BAR "I am Bar" // 以下同様 // ...
のようなヘッダファイルをインクルードして使うと、マクロ定数はグローバルな名前でスコープも型も持ってないからよろしくない。確かに、そのとおり。
次のように変更する。
// hoge.h // 文字列定数を宣言する namespace hoge { extern cons char *FOO; extern cons char *BAR; // ... }
// hoge.cpp // 文字列定数を定義する namespace hoge { const char *FOO = "This is foo"; const char *BAR = "I am Bar"; // ... }
とすると、ファイルが2つになって管理が大変。文字列を値とするenumがあるといいんだが、そんなのないし。
const使うメリットは、あちこちにリテラルが展開されるわけではなくて変数だから、バイナリ内部では文字列リソースが一箇所にまとまる、つうのがある。だが、現状だと、リテラル展開が問題になるほどのことはない。
どうしようかなー?