typedef Stuct проблема в C - PullRequest
       31

typedef Stuct проблема в C

0 голосов
/ 02 августа 2010

У меня странная проблема. Я определил структуру в заголовочном файле C:

typedef struct iRecActive{

    char iRecSID[32];
    unsigned char RecStatus;
    int curSel;

}iRecAcitve_t;

но когда я использую ту же структуру в другом файле, компилятор не распознает структуру, хотя я дважды проверил, что я включил его заголовочный файл. Ниже приводится ошибка:

: ошибка C2065: «iRecActive_t»: необъявленный идентификатор

Ниже приведен полный код файла, в котором я определил структуру

#ifndef _TS_HTTP_APPLICATION_H_
#define _TS_HTTP_APPLICATION_H_

#ifdef __cplusplus
extern "C"
{
#endif

typedef struct iRecActive{

    char iRecSID[32];
    unsigned char RecStatus;
    int curSel;

}iRecAcitve_t;

int startHTTPServer(int HTMLserverPort);
int closeHTTPServer();

int openTS_SegmenterN();
void pushTSDataN(unsigned char* TSData, int len);
void closeTS_SegmenterN();

void removeAllConnections();

#ifdef __cplusplus
}
#endif

#endif

Ответы [ 2 ]

4 голосов
/ 02 августа 2010

изменить iRecAcitve_t на iRecActive_t.

0 голосов
/ 02 октября 2013

Я пытался найти решение для подобной проблемы, но я не нашел его в стеке.Я оставляю здесь ответ для других людей, чтобы сэкономить их время:

Поскольку это C, вы не можете создавать свои переменные там, где хотите.Они должны быть созданы в начале утверждения.Так что это правильно:

if(true) {
   iRecActive_t myRecActive;
   //calculations
   Mutex_Lock(somemutext);
   variable = 14;

И это неправильно:

if(true) {
   //calculations
   Mutex_Lock(somemutext);
   variable = 14;
   iRecActive_t myRecActive;

В последнем примере вы получите сообщение об ошибке: недопустимое использование этого типа в качестве выражения или другого подобного, очень полезногоошибки.

Правильный вопрос здесь, но он был помечен как дублирование (это не так!): проблема с определением типа в C (недопустимое использование этого типа в качестве выражения)

С уважением, Икебан

...