2010-11-01 182 views
0

我在初始化下使用#define秒的数组,但我不断收到错误“预期的表达”数组初始化错误的#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

什么samp,corr,kernel,ce定义为?并且是在.h中的32声明中。或者.c? – 2010-11-01 04:07:24

+0

您好感谢答复,SAMP_BUFF_LEN \ + CORR_BUFF_LEN \ + KERNEL_BUFF_LEN \ + CE_BUFF_LEN \ – user437777 2010-11-01 04:16:58

+0

在File3.h – user437777 2010-11-01 04:17:20

回答

0

预期的表达式:+或=等操作符需要其右操作数的表达式,但不会出现可识别的表达式。

确保有在SCRATCH_BUFF_SZ您的宏(macro is not broken)之间没有新的生产线

+0

喜定义为#define语句我删除新行字符,它仍然给同样的错误信息.. – user437777 2010-11-01 04:16:11

+0

任何特殊字符? (还要小心空格)验证你所有的宏。 SAMP_BUFF_LEN,CORR_BUFF_LEN,KERNEL_BUFF_LEN,CE_BUFF_LEN – Alam 2010-11-01 04:18:23

+0

验证.h文件的顺序。由于你的预处理器在.h中。确保你已经包含你的其他宏的头文件 – Alam 2010-11-01 04:23:12

0

我的猜测是在SCRACTCH_BUFF_SZ您的#define的一个常量没有被定义为这样认为吗?

SAMP_BUFF_LEN CORR_BUFF_LEN KERNEL_BUFF_LEN CE_BUFF_LEN

是不是你的想法吧?

1

两个建议:

  1. 你包括File3.h创建databuff过吗?
  2. 查看预处理器的输出。有了gcc,你可以用-E标志来做到这一点。
0

我仔细检查了每一件事,保持您的意见。 这是一个编译器配置错误。

我正在使用Code Composer Studio。我检查了预处理器选项,现在它工作正常。

我应该试着用其他编译器来隔离问题。

感谢您的时间! 谢谢