私は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
、コンパイラはそれを個別に処理すると考えました。私が間違っている場合は、親切に説明してください。