簡潔な質問内容
constexpr
変数はメモリを確保するのでしょうか。それとも#define
のように置換されるのでしょうか。
質問詳細
例えば、ゲームを作るとして各シーンで表示するテキストを準備します。
各々の変数やマクロは各シーンで使われるものとします。
cpp
1/*グローバル*/ 2 3//ホーム画面で使用するテキスト "スタート" 4#define START "スタート" 5constexpr char start_ce[] = "スタート"; 6char start[] = "スタート"; 7 8//バトルシーンで使用するテキスト 9#define WEAPON "武器" 10constexpr char weapon_ce[] = "武器"; 11char weapon[] = "武器" 12 13
私の認識としては次の通りです。
グローバル変数として定義された変数start
weapon
はメモリを終始確保します。よって、バトルシーンにおいては、使用しない変数start
は無駄なメモリを消費します。
#define
はプリプロセッサの段階で文字列として置き換わったコードがコンパイラに渡されているため、バトルシーンにおいて#define WEAPON
は無駄なメモリを消費しません。
constexpr
はコンパイル時に変数の中身が決定します。しかし、あくまでグローバル変数なので、バトルシーンにおいては使用しない変数start_ce
は無駄なメモリを消費します。
私の認識に違いがあれば、ご指摘いただきたいと思っております。
環境
特にコンパイラなどの指定はありません。
初心者なのでやさしくしてください
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。