2010-11-01 3 views
0

Я инициализирует массив с помощью #define с в C, но я получаю сообщение об ошибке «ожидалась выражение»Массив Ошибка инициализации #define

Далее следует фрагмент кода

#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 \ 
         ) 

Я не понимаю, что здесь не так. Ошибка указывает на директиву #define как «Ожидаемое выражение» для каждой строки параметров макроса def

+0

whats samp, corr, kernel, ce определяется как? и это объявление in32 внутри .h ?? или .c? –

+0

Привет спасибо за ответ, SAMP_BUFF_LEN \ + CORR_BUFF_LEN \ + KERNEL_BUFF_LEN \ + CE_BUFF_LEN \ – user437777

+0

определяются как #defines в File3.h – user437777

ответ

0

Ожидаемое выражение: для оператора, такого как + или =, требуется выражение для его правого операнда, но не отображается распознаваемое выражение.

Убедитесь, что нет никакой новой линии между макросами (macro is not broken) в SCRATCH_BUFF_SZ

+0

Привет я удалил символ новой строки, она по-прежнему дает такое же сообщение об ошибке .. – user437777

+0

любой специальный символ ? (будьте осторожны с пробелами) Проверьте все свои макросы. SAMP_BUFF_LEN, CORR_BUFF_LEN, KERNEL_BUFF_LEN, CE_BUFF_LEN – Alam

+0

Проверьте порядок файлов .h. Поскольку ваш препроцессор находится в .h. Убедитесь, что вы включили заголовочный файл для других макросов – Alam

0

моя догадка одна из ваших с помощью #define констант в SCRACTCH_BUFF_SZ не определена, как вы думаете?

т.е.

SAMP_BUFF_LEN CORR_BUFF_LEN KERNEL_BUFF_LEN CE_BUFF_LEN

не то, что вы думаете, может быть?

1

Два предложения:

  1. Вы включая File3.h, прежде чем создавать databuff?
  2. Посмотрите на результат от предшественника. С помощью gcc вы можете сделать это с помощью флага -E.
0

Я проверял каждую вещь, сохраняя ваши комментарии в поле зрения. Это была ошибка конфигурации компилятора.

Я использую Code Composer Studio. Я проверил опцию препроцессора, и теперь он работает нормально.

Я должен был попробовать другой компилятор, чтобы изолировать проблему.

цените ваше время! Thanks

Смежные вопросы