2013-06-24 153 views
1

我使用Visual Studio 2005并在构建WinCE 6.0操作系统映像方面受过培训。我在pin mux setup部分。我已经设置了一个宏BSP_HC1,因此只用该宏编码应该可以工作。编码的一部分是,Visual Studio - 致命错误C1057

#define PAD_ENTRY(x,y)  {PAD_ID(x),y,0}, 
#define SAFE_MODE   7 
#define PAD_ID(x) (offsetof(OMAP_SYSC_PADCONFS_REGS,CONTROL_PADCONF_##x)/sizeof(UINT16)) 

// OMAP_SYSC_PADCONFS_REGS is a structure and CONTROL_PADCONF_GPMC_A1 (for eg.,) is an element in it. 

#define INPUT_DISABLED   (0<<8) 
#define MUXMODE(x)    ((x & 0x7)<<0) 
typedef struct { 
    UINT16 padID; 
    unsigned int Cfg:15;  
    unsigned int inUse:1; 
} PAD_INFO; 



#ifdef BSP_HC1 
#define GPMC_PADS \ 
    PAD_ENTRY(GPMC_A6 ,INPUT_DISABLED | MUXMODE(SAFE_MODE)) \ 
    PAD_ENTRY(GPMC_nCS2 ,INPUT_DISABLED | MUXMODE(0)) 
#else 
#define GPMC_PADS \ 
    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 

这就是所谓的main.c作为,

static const PAD_INFO ebootPinMux[] = { 
      DSS_PADS 
      GPMC_PADS 
     USBOTG_PADS 
      END_OF_PAD_ARRAY 
    }; 

在编译时出现错误:fatal error C1057: unexpected end of file in macro expansion和它指向GPMC_PADS。 msdn解释了我可能会错过某个括号的错误。但是,这并没有帮助我解决这个问题。请引导我。

+0

仅当定义了BSP_HC1时才发生错误? SAFE_MODE,PAD_ENTRY和PAD_INFO的定义是什么? – kkrambo

+0

“PAD_ID”,“BSP_HC1”和“MUXMODE”的定义是什么? “GPMC_ *”和“INPUT_DISABLED”宏只是整数,还是宏也是复杂的? –

+0

@kkrambo我已经更新了必要的宏。 – Gomu

回答

2

其实,我错过了一个括号!当我添加它时,错误得到修复。谢谢。

1

在表达式你给 -

#define GPMC_PADS \ 
    PAD_ENTRY(GPMC_A6 ,INPUT_DISABLED | MUXMODE(SAFE_MODE)) \ 
    PAD_ENTRY(GPMC_nCS2 ,INPUT_DISABLED | MUXMODE(0)) 

线条PAD_ENTRY(GPMC_A6,INPUT_DISABLED | MUXMODE(safe_mode设置))和PAD_ENTRY(GPMC_nCS2,INPUT_DISABLED | MUXMODE(0))是在同一条线上。

请检查PAD_ENTRY宏的实现是什么。 我强烈地感觉到这个问题,因为在同一行中使用了两次PAD_ENTRY宏。 我觉得应该是这样的 -

#define GPMC_PADS \ 
PAD_ENTRY(GPMC_A6 ,INPUT_DISABLED | MUXMODE(SAFE_MODE)) + \ 
    PAD_ENTRY(GPMC_nCS2 ,INPUT_DISABLED | MUXMODE(0)) 

手段应该有两个PAD_ENTRY宏之间执行的一些操作。

+0

我实际上只是从EVM BSP开发它。我只是改变了代码,而不是一个完整的新代码。它只有相同的格式。 – Gomu