2013-08-06 82 views
0

無論我在哪裏包含某個commands.h頭文件,除了commands.c之外的任何地方,編譯器都會拋出此錯誤。 commands.h包含函數原型,其利用在instrument.h定義結構的,特別是:預期的聲明說明符或'...'在'MLD_PACKET'之前

void readConfig(PSTATPLUS_CONFIG* pStatConfig_p, MLD_PACKET* rxPacketUart2_p); 
void readState(PSTATPLUS_STATE* pStatState_p, MLD_PACKET* rxPacketUart2_p); 
void writeConfig(PSTATPLUS_CONFIG* pStatConfig_p, MLD_PACKET* rxPacketUart2_p); 
void writeState(PSTATPLUS_STATE* pStatState_p, MLD_PACKET* rxPacketUart2_p); 

PSTATPLUS_CONFIGPSTATPLUS_STATE被定義爲這樣,在instrument.h

typedef struct { 
    float signalAmplitude;  // Signal Amplitude 
    float signalOffset;   // Signal Offset 
    unsigned char waveType;  // Waveform Type 
    float startFreq;   // Frequency Start 
    float stopFreq;    // Frequency Stop 
    unsigned int numIncrements; // Number of Increments 
    unsigned char scale;  // Linear(0) or log(1) 
    float stepDelay;   // Step Delay 
}PSTATPLUS_CONFIG; 

typedef struct { // Current biosensor status 
    unsigned char scan;  // Scan status (on/off) 
    unsigned char sample; // Sample status (on/off) 
    unsigned int currentIncrement; // Current scan increment 
    unsigned char gain;  // Current gain setting 
    float iValue;   // I voltage 
    float qValue;   // Q voltage 
    unsigned int sampleDivider; // 1 takes every ADC sample, 2 takes every 2nd ADC sample, 3 takes every 3rd ADC samp... n takes every nth. 0 stops data collection. 
    unsigned int totalSamples; // total number of samples wanted to complete one measurement. 
}PSTATPLUS_STATE; 

我需要寫在commands.h頭某些定義可以訪問我的instrument.c文件,但如前所述,每次我在其中包含commands.h時,編譯器都會產生該錯誤。我試過在其他一些源文件中包含commands.h,同樣的事情一直在發生。任何幫助表示讚賞。

+1

定義MLD_PACKET在哪裏? – doctorlove

+0

看起來你需要在你的'commands.h'中聲明'MLD_PACKET'的地方,或者有一個前向聲明。 –

回答

1

讓您commands.h #include "instrument.h",因爲它在那裏需要的東西,否則PSTATPLUS_CONFIGPSTATPLUS_STATE會導致錯誤。

#ifndef COMMANDS_INCLUDED 
#define COMMANDS_INCLUDED 

#include "instrument.h" 

//.. as you were 

#endif 
+0

事情是,那頭沒有包括instrument.h就沒事了。這聽起來很瘋狂,我現在不能重新創建問題。我可以在instruments.c中包含commands.h,並且不會創建任何錯誤=/ – dannybeckett

+0

如果您包含「instrument.h」,然後在instrument.cpp中包含「commands.h」,它可能在那裏工作 - 您需要查看在你使用它們之前的定義,或者作爲一箇中途向前的房屋在報頭中聲明,然後確保你有定義來處理你使用的東西 – doctorlove

0

它看起來像編譯器認爲MLD_PACKET是一個不是類型的參數。在使用它之前,你還應該包括它的定義或聲明。向前宣佈它至少。

相關問題