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