C ++の列挙型に静的ポインタアドレスを格納する方法はありますか?

疑わしい

これはC ++では不可能かもしれませんが、理由はわかりません。スタックオーバーフローとグーグルを検索してきましたが、答えが見つかりません。

最初に、私が取り組んでいる仮定について述べます。

最初の仮定:このコードがグローバルスコープにある場合。プログラムのデータセグメントに格納されると思います。つまり、コンパイル時にメモリアドレスがわかっているということです。char const* const test1 = "test1";

2番目の仮定:列挙値はシンボルテーブルにシンボルとして格納されます。

このコードはコンパイルされます:

enum class test : size_t
{
    TEST0 = 123,
    TEST1 = 456
};

ただし、size_tが32ビットマシンでは32ビット、64ビットマシンでは64ビットであることを考えると、ポインタのアドレスを格納できるはずです。ただし、これはコンパイルされません。

char const* const test1 = "test1";

enum class test : size_t
{
    TEST0 = 123,
    TEST1 = (size_t)test1
};

なぜこれが機能しないのですか?test1のアドレスはコンパイル時に認識されている必要があり、単にメモリアドレスを保存している必要があります。

これを行う目的は、アドレスをポインターに変換し直し、それを使用して列挙型を文字配列(つまり、文字列)に変換できるようにすることです。

スネフテル

test1のアドレスはコンパイル時に不明であり(アドレス空間配置のランダム化などが影響します)、コンパイル中は確実に不明です(変数はリンクするまでデータセグメントに一緒に配置されないため)。

あなたの質問は本当にXY問題のように聞こえます。ユニークなものがたくさんある場合char*、なぜそれらを列挙型に詰め込むのですか?それらはすでに列挙型を表しています。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Cに格納されているポインタのアドレスはどこにありますか?

Cのcharポインタにcharポインタのアドレスを格納する

文字列、配列、またはポインタをC / C ++に格納するためのより効率的な方法はどれですか?

C ++コンパイラに変数をレジスタに格納するように強制する方法はありますか?

2D配列のメモリアドレスをCの構造体のポインタメンバーに格納する方法

Javaの列挙型からアイテム番号を取得するCのような方法はありますか?

Cは常にポインタを使用してアドレスを処理する必要がありますか?

c ++ 11に任意のメソッドポインタを格納する方法は?

C ++の列挙型クラスからランダムに取得する方法はありますか?

以下のポインタとその出力に関連するCコードでは、値a [1]、つまり20が連続したアドレスde9に格納されないのはなぜですか。

データベースからC#の配列に整数配列型の結果を格納する方法は?

最初の列挙型を「安全な」デフォルトにするためのC ++ガイドラインはありますか?

コンパイラCによるグローバル、静的、文字列リテラルの場所アドレスはどこにありますか?

列挙型クラスを文字列(c ++)に変換する簡単な方法はありますか?

そのノードを指すすべてのポインターのアドレス空間を取得するC ++の関数はありますか?

文字列内の文字に列挙型を使用する方法はありますか?C ++

名前空間なしでc ++に列挙型をネストする方法はありますか?

C: 構造体へのポインターを別の構造体内の動的配列に格納する方法は?

割り当てられたポインタアドレスをC ++に格納するだけでメモリをプロファイリングすることは可能ですか?

C ++-2つの場所に格納されているポインタの配列をクリアします

整数のインスタンスを配列内のC#の別の変数に格納する方法は?

C / C ++の多次元配列に1バイト未満の値を格納するための計算効率の高い方法はありますか?

voidポインタを使用せずにC関数で任意の型を返す方法はありますか?

C ++ポインタを格納する静的クラスを作成する

C ++ 11 std :: unordered_mapにメソッドへのポインタを格納する方法は?

c#列挙型に許可された値の「範囲」を与える方法はありますか?

Cで配列にポインタを割り当てたり、配列のアドレスをポインタアドレスに変更したりすることは可能ですか?

非ポインター型にCスタイルのキャストではなくstatic_castを使用することに利点はありますか?

c ++の戻り値の型には、現在のクラスの型を持つポインタがあります

TOP 一覧

  1. 1

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  2. 2

    Ansibleで複数行のシェルスクリプトを実行する方法

  3. 3

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  4. 4

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  5. 5

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  6. 6

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  7. 7

    パンダは異なる名前の列に追加します

  8. 8

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  9. 9

    グラフ(.PNG)ファイルをエクスポートするZabbix

  10. 10

    Chromeウェブアプリのウェブビューの高さの問題

  11. 11

    ラベルとエントリがpythontkinterに表示されないのはなぜですか?

  12. 12

    Windows 10の起動時間:以前は20秒でしたが、現在は6〜8倍になっています

  13. 13

    mutate_allとifelseを組み合わせるにはどうすればよいですか

  14. 14

    Reactでclsxを使用する方法

  15. 15

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

  16. 16

    テキストフィールドの値に基づいて UIslider を移動します

  17. 17

    ファイル内の2つのマーカー間のテキストを、別のファイルのテキストのセクションに置き換えるにはどうすればよいですか?

  18. 18

    MLでのデータ前処理の背後にある直感

  19. 19

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

  20. 20

    Pythonを使用して同じ列の同じ値の間の時差を取得する方法

  21. 21

    グラフからテーブルに条件付き書式を適用するにはどうすればよいですか?

ホットタグ

アーカイブ