我正在使用Visual Studio 2005
並在構建WinCE 6.0
OS Image中受過培訓。我在pin mux setup部分。我已經設置了一個宏BSP_HC1
,所以只用該宏編碼應該可以工作。部分編碼爲Visual Studio - 編譯錯誤
#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
智能感知正確地將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
中,編譯器會分開處理它。請解釋我,如果我錯了。
你可能想看看預處理器的輸出,看看它做你的構造。 – alk