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