カメラ オブジェクトに複数のラベルがあり、メモリを節約しようとしています (メモリが非常に少ない環境)。静的定数配列とマクロを使用した現在のバージョンは次のとおりです。
ヘッダー内:
#define NUM_CAMERAS 6
static const char* CAM_LABELS[NUM_CAMERAS] = { "Camera1",
"Camera2",
"Camera3",
"752x480_cam",
"std_cam",
"wide_cam" };
#define CAM_LABEL(id) id<=NUM_CAMERAS?CAM_LABELS[id-1]:"cam id error"
プログラムでの使用法:
int cam = 3;
pritnf("Configuring camera id [%d], label: [%s]\n",cam, CAM_LABEL(cam) );
上記は機能しますが、マクロを使用して static const 配列を置き換えたかったので、ヘッダーに次のようなものを追加します。
#define NUM_CAMERAS 6
#define CAM_LABEL1 "Camera1"
#define CAM_LABEL2 "Camera2"
#define CAM_LABEL3 "Camera3"
#define CAM_LABEL4 "752x480_cam"
#define CAM_LABEL5 "std_cam"
#define CAM_LABEL6 "wide_cam"
#define CAM_LABEL(id) /* myster code */
上記の「id」として整数値を渡し、既知の CAM_LABEL## 値を再作成する方法はありますか? ## 接着マクロのいくつかの組み合わせを試しましたが、その変数値の代わりに、「cam」またはマクロに渡された変数名が入れられました。私はおそらく非常に明白な何かを見逃しています。
前もって感謝します。