C++コンパイラでは、QStringLiteralsをC++ヘッダファイル内の#define
にすることができます。私は複数回QStringLiteral("bar")
を入力するために避けることができるように、foo.h
を含んで異なるの.cppファイルにQStringLiteralsをヘッダファイルに#defineできますか?
// foo.h
#ifndef FOO_H
#define FOO_H
#define BAR QStringLiteral("bar")
#endif
目標は、(コピー)を使用することですBAR
:ような何か。
しかし:
- が、それは安全ですか? (QStringLiteralがクラッシュする可能性があると聞きました)
- 効率的ですか? (つまり、1回だけ割り当てられた文字列ですか?)
マクロを定義するだけでは実際には何も起こりませんし、コンパイラが見るコードには影響しません。マクロの使用方法はすべてです。 –
@JoachimPileborg:目的は、 'foo.h 'を含むさまざまな.cppファイルで' BAR'を使用することです。 – eang
はテキスト置換を定義するだけです。したがって、原則としてあなたが望むものを定義することができます。それは安全ですか?可能であれば、マクロは避けてください。あなたが望むものを、はるかに良く、より安全にすることができます。あなたは実際に何を達成したいのですか?この '#define'の目的は何ですか? – user463035818