我正在使用Visual Studio 2005
并接受构建WinCE 6.0
OS Image 的培训。我在引脚多路复用器设置部分。我已经设置了一个宏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 部分显示为非活动代码。但是,当我选择构建时,我收到错误为“ 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
,编译器会单独处理它。如果我错了,请解释我。