C中的typedef结构问题

时间:2010-08-02 06:36:02

标签: c struct scope typedef

我面临一个奇怪的问题,我在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 个答案:

答案 0 :(得分:4)

iRecAcitve_t更改为iRecActive_t

答案 1 :(得分:0)

我试图找到类似问题的解决方案,但我没有在堆栈上找到它。我离开这里回答其他人,节省他们的时间:

因为它是C,所以无法在任何地方创建变量。必须在声明开头创建它们。所以这是正确的:

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

这是不正确的:

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

在上一个示例中,您收到错误消息:非法使用此类型作为表达式 或其他类似的,非常有用的错误。

正确的问题在这里,但它被标记为重复(它不是!): typedef stuct problem in C (illegal use of this type as an expression)

此致 Ikeban