Ошибка инициализации массива #define - PullRequest
0 голосов
/ 01 ноября 2010

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

Ниже приведен фрагмент кода

#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

Ответы [ 4 ]

1 голос
/ 01 ноября 2010

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

  1. Включаете ли вы File3.h перед созданием базы данных?
  2. Посмотрите на вывод препроцессора. С помощью gcc вы можете сделать это с флагом -E.
0 голосов
/ 01 ноября 2010

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

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

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

цените ваше время!Спасибо

0 голосов
/ 01 ноября 2010

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

т.е.

SAMP_BUFF_LEN CORR_BUFF_LEN KERNEL_BUFF_LEN CE_BUFF_LEN

* 1006 Возможно, вы не

1006

0 голосов
/ 01 ноября 2010

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

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

...