C中的typedef stuct问题

我面临一个奇怪的问题我已经定义了一个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 

iRecAcitve_t更改为iRecActive_t

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

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

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

这是不正确的:

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

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

正确的问题在这里,但它被标记为重复(它不是!): C中的typedef stuct问题(非法使用此类型作为表达式)

问候,艾克class