2013-06-24 4 views
1

J'utilise Visual Studio 2005 et je suis formé à la construction de WinCE 6.0 OS Image. Je suis dans la partie de configuration de pin mux. J'ai mis une macro BSP_HC1, donc le codage avec cette seule macro devrait fonctionner. Une partie du codage est,Visual Studio - Erreur irrécupérable 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 

Il est appelé à main.c que,

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

Lors de la compilation je reçois l'erreur: fatal error C1057: unexpected end of file in macro expansion et les points à GPMC_PADS. Le msdn explique l'erreur que je pourrais manquer une parenthèse. Mais ça ne m'a pas aidé à résoudre ça. Veuillez me guider.

+0

L'erreur se produit-elle uniquement lorsque BSP_HC1 est défini? Quelle est la définition de SAFE_MODE, PAD_ENTRY et PAD_INFO? – kkrambo

+0

Quelles sont les définitions de 'PAD_ID',' BSP_HC1', et 'MUXMODE'? Les macros 'GPMC_ *' et 'INPUT_DISABLED' sont-elles simplement des entiers ou sont-elles aussi des macros compliquées? –

+0

@kkrambo J'ai mis à jour avec les macros nécessaires. – Gomu

Répondre

2

En fait, j'avais oublié une parenthèse! Quand je l'ai ajouté, l'erreur a été corrigée. Merci.

1

Dans l'expression que vous avez donné -

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

Les lignes PAD_ENTRY (GPMC_A6, INPUT_DISABLED | MUXMODE (SAFE_MODE)) et PAD_ENTRY (GPMC_nCS2, INPUT_DISABLED | MUXMODE (0)) sont en même ligne.

Veuillez vérifier quelle est l'implémentation de la macro PAD_ENTRY. Je crois fortement que le problème est dû à l'utilisation de la macro PAD_ENTRY deux fois dans la même ligne. Je pense que ce devrait être quelque chose comme -

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

signifie qu'il devrait y avoir une opération effectuée entre les deux macro PAD_ENTRY.

+0

Je suis en train de le développer à partir d'un BSP EVM uniquement. Je modifie seulement le code et ce n'est pas un nouveau complet. Il a déjà le même format seulement. – Gomu