2010-11-01 23 views
0

Je suis un tableau en utilisant Initialisation #define s en C, mais je continue à obtenir l'erreur "prévue une expression"erreur d'initialisation tableau #define

Après est extrait de code

#include "File2.h" 
File 1.h 
Int32 dataBuff[SCRATCH_BUFF_SZ]; 

File2.h

#define SCRATCH_BUFF_SZ (   SAMP_BUFF_LEN \ 
            + CORR_BUFF_LEN \ 
            + KERNEL_BUFF_LEN \ 
            + CE_BUFF_LEN \ 
         ) 

Je ne comprends pas ce qui ne va pas ici. L'erreur pointe vers la directive #define comme "Expected an Expression" sur chaque ligne de paramètres de la macro

+0

Qu'est-ce que samp, corr, kernel, ce défini comme? et est-ce que la déclaration in32 dans un .h ?? ou un .c? –

+0

Salut merci pour la réponse, SAMP_BUFF_LEN \ + CORR_BUFF_LEN \ + KERNEL_BUFF_LEN \ + CE_BUFF_LEN \ – user437777

+0

sont définis comme #defines dans File3.h – user437777

Répondre

0

Attendu une Expression: Un opérateur tel que + ou = requiert une expression pour son opérande droit, mais aucune expression reconnaissable n'apparaît.

Assurez-vous qu'il n'y a pas de nouvelle ligne entre vos macros (macro is not broken) dans SCRATCH_BUFF_SZ

+0

Salut je l'ai enlevé caractère de nouvelle ligne, il donne toujours un même message d'erreur .. – user437777

+0

un caractère spécial ? (soyez prudent avec les espaces aussi) Vérifiez toutes vos macros. SAMP_BUFF_LEN, CORR_BUFF_LEN, KERNEL_BUFF_LEN, CE_BUFF_LEN – Alam

+0

Vérifiez l'ordre de vos fichiers .h. Comme votre préprocesseur est en .h. Assurez-vous que vous avez inclus le fichier d'en-tête pour vos autres macros – Alam

0

Je suppose un de vos constantes #defined dans SCRACTCH_BUFF_SZ ne définit pas comme vous pensez?

-à-dire

SAMP_BUFF_LEN CORR_BUFF_LEN KERNEL_BUFF_LEN CE_BUFF_LEN

ne sont pas ce que vous pensez peut-être?

1

Deux suggestions:

  1. Êtes-vous avant de File3.h y compris la création databuff?
  2. Regardez la sortie du pré-processeur. Avec gcc, vous pouvez le faire avec le drapeau -E.
0

J'ai vérifié chaque chose en gardant vos commentaires en vue. C'était une erreur de configuration du compilateur. J'utilise Code Composer Studio. J'ai vérifié l'option de préprocesseur dedans et maintenant cela fonctionne bien.

J'aurais dû essayer sur un autre compilateur pour isoler le problème.

appréciez votre temps! Merci