1

私はOS イメージVisual Studio 2005の構築に使用し、トレーニングを受けています。WinCE 6.0ピンマルチプレクサのセットアップ部分にいます。マクロを設定したBSP_HC1ので、そのマクロだけでコーディングすればうまくいくはずです。コーディングの一部は、

#define GPMC_PADS \
#ifdef BSP_HC1
    PAD_ENTRY(GPMC_A6   ,INPUT_DISABLED | MUXMODE(SAFE_MODE))   \
    PAD_ENTRY(GPMC_nCS2 ,INPUT_DISABLED | MUXMODE(0))   
#else
    PAD_ENTRY(GPMC_A1       ,INPUT_DISABLED | MUXMODE(0))     \
    PAD_ENTRY(GPMC_A2       ,INPUT_DISABLED | MUXMODE(0))     \
    PAD_ENTRY(GPMC_A3       ,INPUT_DISABLED | MUXMODE(0))
#endif

IntelliSense は、else 部分を非アクティブなコードとして正しく表示していました。しかし、Build を選択すると、" error: C2449 found '{' at file scope (missing function header?)" というエラーが発生しました。

そのため、 の最後にバックスラッシュを追加しました#ifdef, #else and #endif

#define GPMC_PADS \
#ifdef BSP_HC1  \
    PAD_ENTRY(GPMC_A6   ,INPUT_DISABLED | MUXMODE(SAFE_MODE))   \
    PAD_ENTRY(GPMC_nCS2 ,INPUT_DISABLED | MUXMODE(0))   \
#else   \
    PAD_ENTRY(GPMC_A1       ,INPUT_DISABLED | MUXMODE(0))     \
    PAD_ENTRY(GPMC_A2       ,INPUT_DISABLED | MUXMODE(0))     \
    PAD_ENTRY(GPMC_A3       ,INPUT_DISABLED | MUXMODE(0))     \
#endif

ビルド中にエラーはありませんでした。しかし、やみくもにやったので、自分が正しいことをしたのか、コーディングが意図した目的を果たしているのか疑問に思っています。#ifdefおよびその他の関連するプリプロセッサ ディレクティブをマクロ定義に含める必要はなくGPMC_PADS、コンパイラはそれを個別に処理すると考えました。私が間違っている場合は、親切に説明してください。

4

1 に答える 1