エンジニアリング仕様書の要素と同じ名前の変数がたくさんあるので、文字列バージョンの名前も役に立ちます。
私は次のようなマクロをよく使用しています。
#define MACRO(a) a, #a
一般的な使用法は次のとおりです。
void someFunction(int a, const char *name);
someFunction(MACRO(meaningfully_named_variable));
私の質問は 3 つあります。
- これを行うより良い方法はありますか?
- Boost または他のライブラリで同様のマクロを利用できますか?
- そうでない場合、どうすればこれを改良して名前を変更し、明確で有用なものにすることができますか?
編集 上記は最小限の例であると言うべきでした。関数には他のパラメーターが含まれる場合があり、名前付きエンティティはデータ メンバーである場合もあれば、関数自体である場合もあります。
私が C++ 用に検討しているもう 1 つの拡張機能はNamedRef
、マクロの内容を受け取ることができるクラスです。
template <typename T>
struct NamedRef
{
NamedRef(T *t, const char *name) : t(t), name(name) { }
T *t;
const char *name;
};
template <typename T>
NamedRef<T> namedRef(T &t, const char *name)
{
return NamedRef<T>(&t, name);
}
#define WITH_NAME(a) a, #a
// more sophisticated usage example
void otherFunction(double, NamedRef<int>, bool);
otherFunction(0.0, namedRef(object.WITH_NAME(meaningful_member_name)), false);