実行時に客観的なcの値をenumに割り当てる方法はありますか? 私はいくつかの列挙型を持っており、それぞれの列挙型に特定の値を持たせたいと考えています。 値はxmlファイルから読み取ることができます。これを行う方法はありますか?実行時に列挙型の値を変更しますか?
6
A
答えて
16
Unfortunatley、@Binyaminは、あなたが列挙型でこれを行うことができない、正しいです。このような理由から、私は通常私のプロジェクトで、次の操作を行います。
// in .h
typedef int MyEnum;
struct {
MyEnum value1;
MyEnum value2;
MyEnum value3;
} MyEnumValues;
// in .m
__attribute__((constructor))
static void initMyEnum()
{
MyEnumValues.value1 = 10;
MyEnumValues.value2 = 75;
MyEnumValues.value3 = 46;
}
また、これは通常の列挙型では不可能である、値を反復処理することができるという利点があります:
int count = sizeof(MyEnumValues)/sizeof(MyEnum);
MyEnum *values = (MyEnum *) &MyEnumValues;
for (int i = 0; i < count; i++)
{
printf("Value %i is: %i\n", i, values[i]);
}
全体として、これはCで列挙型を行うのが私の好みの方法です。
5
いいえ、列挙情報はコンパイル時に消去されます。
+4
残念なことに、これが当てはまります。しかし、情報を保持したい場合には、列挙型の代わりに構造体を使用することができます。 –
関連する問題
- 1. 実行時に入力列挙型
- 2. 実行時に列挙を作成/変更する
- 3. 列挙型からリンクテーブルへの変更
- 4. mysqlの列挙型を変更する
- 5. char配列を列挙型配列に変換しますか?
- 6. 実行時にXamDataGridの列の位置を変更します。
- 7. DBの列挙型または列挙型の列挙型
- 8. 実行時にUISupportedExternalAccessoryProtocolsを列挙します
- 9. 列挙型の値を別々の列挙型で再利用
- 10. コンパイル時に列挙型の値を確認する
- 11. 列挙型変数
- 12. が列挙の値を設定し、列挙型
- 13. 列挙型の値は何ですか?
- 14. リソースからxmlの列挙型の値を設定します
- 15. 実行時に列挙型を定義する単純な方法
- 16. ブール値で錆の列挙型をチェックしますか?
- 17. Javaは列挙型の値を取得しますか?
- 18. 私はバンドルで列挙値をパックし、列挙型
- 19. Objective Cの列挙型が再割り当て時に変更されるオブジェクト
- 20. ASP.NETは実行時に.resxファイルからリソース値を変更します
- 21. 実行時にオブジェクトのプロパティを変更しますか?
- 22. 実行時にCABasicAnimationのsetvalueを変更していますか?
- 23. 列挙型の中の列挙型
- 24. 列挙型の列挙型の作成
- 25. リストを選択する列挙型。デフォルトの変更<option>タグ値
- 26. 値を列挙型に設定 - Java
- 27. C#の列挙型の型変換
- 28. 列挙型内の列挙型
- 29. 実行時にマクロの値を変更する
- 30. 列挙型に
@ Richard .. __attribute __((コンストラクタ))について説明してください... –
@learningDroidターゲットがロードされる直前に呼び出される関数を作成することができるGCC拡張機能(dylibでは、dylibの最初の関数が実行される前にアプリケーション内で 'main()'の直前にあります) 。非常に便利な構造物です。そして、あなたが重たいことをしない限り、あなたは大丈夫でしょう。 –
私はxmlファイルを読み込み、構造体の列挙型に値を割り当てることを計画しています。 __attributeメソッド –