C语言中结构体数组名作为函数参数的问题
两个结构体如下:structrmc1207{intvalue;intsyntax;intmax_value;intaccess;intstatus;charname[BU...
两个结构体如下:
struct rmc1207
{
int value;
int syntax;
int max_value;
int access;
int status;
char name[BUFFER_SIZE];
int var_oid[10];
};
struct rmc1207 ramp[BUFFER_SIZE]={//RMC1207 相位灯的控制部分
{, , , , , ,},
{, , , , , ,},
.
.
.
.
.
};
struct snmp_seq
{
int version;//版本号
int community[BUFFER_SIZE];//团体关键字
int command;//PUD类型
int reqid[BUFFER_SIZE];//请求标识
int errstat;//错误状态
int errindex;//错误索引
struct variable_list//绑定变量
{
int oid_name[BUFFER_SIZE];//OID值
int oid_len;//OID长度
int value_type;//变量值的类型
int value_len;//变量值的长度
int oid_value;//变量值的值
}val;
}sp;
下面是我编写的函数,我“如何调用上两个结构体的变量”完成如下函数?
int oid_check(?????????????????)
{
int flag=0;
int flag1=0;
int temp=0;
int i=0, j=0;
for(i=0;i<5;i++)
{
for(j=1+flag1;j<16;j++)
{
if(sp.val.oid_name[i+11]==ramp[j+0].var_oid[i+1])
{
flag=1;
temp=j;
if(sp.val.oid_name[i+10]!=ramp[temp+0].var_oid[i])
{
flag=0;
break;
}
else flag1=temp;
break;
}
flag=0;
}
if((flag==0)||(sp.val.oid_name[i+12]==0)) break;
}
return flag;
}
=============================================================
#define BUFFER_SIZE 1024
int oid_check(struct snmp_seq sp, struct rmc1207 ramp[], int BUFFER_SIZE);声明
flag=oid_check(sp, ramp, BUFFER_SIZE);调用
int oid_check(struct snmp_seq sp, struct rmc1207 ramp[], int BUFFER_SIZE)
{};函数
错误提示:
1、error: array type has incomplete element type
2、error: expected ';', ',' or ')' before numeric constant 展开
struct rmc1207
{
int value;
int syntax;
int max_value;
int access;
int status;
char name[BUFFER_SIZE];
int var_oid[10];
};
struct rmc1207 ramp[BUFFER_SIZE]={//RMC1207 相位灯的控制部分
{, , , , , ,},
{, , , , , ,},
.
.
.
.
.
};
struct snmp_seq
{
int version;//版本号
int community[BUFFER_SIZE];//团体关键字
int command;//PUD类型
int reqid[BUFFER_SIZE];//请求标识
int errstat;//错误状态
int errindex;//错误索引
struct variable_list//绑定变量
{
int oid_name[BUFFER_SIZE];//OID值
int oid_len;//OID长度
int value_type;//变量值的类型
int value_len;//变量值的长度
int oid_value;//变量值的值
}val;
}sp;
下面是我编写的函数,我“如何调用上两个结构体的变量”完成如下函数?
int oid_check(?????????????????)
{
int flag=0;
int flag1=0;
int temp=0;
int i=0, j=0;
for(i=0;i<5;i++)
{
for(j=1+flag1;j<16;j++)
{
if(sp.val.oid_name[i+11]==ramp[j+0].var_oid[i+1])
{
flag=1;
temp=j;
if(sp.val.oid_name[i+10]!=ramp[temp+0].var_oid[i])
{
flag=0;
break;
}
else flag1=temp;
break;
}
flag=0;
}
if((flag==0)||(sp.val.oid_name[i+12]==0)) break;
}
return flag;
}
=============================================================
#define BUFFER_SIZE 1024
int oid_check(struct snmp_seq sp, struct rmc1207 ramp[], int BUFFER_SIZE);声明
flag=oid_check(sp, ramp, BUFFER_SIZE);调用
int oid_check(struct snmp_seq sp, struct rmc1207 ramp[], int BUFFER_SIZE)
{};函数
错误提示:
1、error: array type has incomplete element type
2、error: expected ';', ',' or ')' before numeric constant 展开
3个回答
展开全部
函数定义和声明的参数应该是: int oid_check(struct snmp_seq sp, struct rmc1207 * ramp, int BUFFER_SIZE);
函数调用: flag=oid_check(sp, ramp, BUFFER_SIZE);
-------------------------------------------------------------------------------
在这里, ramp 是结构体数组的指针
函数调用: flag=oid_check(sp, ramp, BUFFER_SIZE);
-------------------------------------------------------------------------------
在这里, ramp 是结构体数组的指针
追问
error: expected ';', ',' or ')' before numeric constant
追答
检查一下你的程序, 应该是有基本的语法格式问题, 改正就好啦. 因为你没有贴完整的程序, 也没能帮你看.
展开全部
两种方法:
函数声明:int oid(snmp_seq sp, rmc1207 ramp[], int size)
函数声明:int oid(snmp_swq sp, rmc1207 * ramp, int size)
两种方法实际上是一样的,数组在函数调用时会退化成指针,因此需要传入数组的大小,即int size。
调用: oid(sp, ramp, BUFFER_SIZE)即可。
函数声明中不能直接写BUFFER_SIZE,只能写size。
更多追问追答
追问
我补充了错误提示,请看下
追答
函数声明中不能直接写BUFFER_SIZE,只能写size。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数声明:int oid(snmp_seq sp, rmc1207 ramp[], int size)
函数声明:int oid(snmp_swq sp, rmc1207 * ramp, int size)
函数声明:int oid(snmp_swq sp, rmc1207 * ramp, int size)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询