我正在使用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