2010-11-01 176 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。我檢查了預處理器選項,現在它工作正常。

我應該試着用其他編譯器來隔離問題。

感謝您的時間! 謝謝