头文件里定义的结构体数组在源文件里出现错误

rach09 2011-05-09 07:05:42
vc6.0

头文件里定义
struct MFD{
char nam[20]; //user name
UDM* d_a; //user directory address
int count; //user have how many file
} mfd[N];
在cpp里这样使用
void iniMFD(){
mfd[0].nam="r1";
}

会提示:
C:\me\os\fileOperate\a.cpp(8) : error C2065: 'mfd' : undeclared identifier
C:\me\os\fileOperate\a.cpp(8) : error C2109: subscript requires array or pointer type
C:\me\os\fileOperate\a.cpp(8) : error C2228: left of '.nam' must have class/struct/union type
...全文
323 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
晨星 2011-05-13
  • 打赏
  • 举报
回复
把头文件里前面的#if(_VER_MSC > 1000)和最后的#endif都去掉吧。
你从哪里看来的代码啊?我用的的Visual C++ 2010里面好像都不支持“_VER_MSC”这么个宏。
rach09 2011-05-09
  • 打赏
  • 举报
回复
头文件:g.h

struct H{
int i;
}h[3];
.cpp:

#include <iostream>
#include "g.h"
using namespace std;
h[0].i=1;
void main(){
}
提示:
--------------------Configuration: returnTemp - Win32 Debug--------------------
Compiling...
returnTemp.cpp
C:\me\test\cpp\returnTemp.cpp(6) : error C2466: cannot allocate an array of constant size 0
C:\me\test\cpp\returnTemp.cpp(6) : error C2143: syntax error : missing ';' before '.'
C:\me\test\cpp\returnTemp.cpp(6) : error C2501: 'h' : missing storage-class or type specifiers
C:\me\test\cpp\returnTemp.cpp(6) : error C2371: 'h' : redefinition; different basic types
c:\me\test\cpp\g.h(4) : see declaration of 'h'
C:\me\test\cpp\returnTemp.cpp(6) : error C2143: syntax error : missing ';' before '.'
Error executing cl.exe.

returnTemp.obj - 5 error(s), 0 warning(s)
rach09 2011-05-09
  • 打赏
  • 举报
回复
头文件(a.h):
#if(_VER_MSC > 1000)
#pragma once
//#include <iostream>

#define N 10 //有N个用户
#define L 20 //每个用户可以有L个文件
#define S 10 //允许一个用户最多可以同时打开S个文件
#define recodeLen 50 //每个记录的长度

enum fileAttribute{r,rw}; //r is read ; two is rw and write
enum fileStatus{n_open,n_close}; //
struct MFD{
char nam[20]; //user name
UDM* d_a; //user directory address
int count; //user have how many file
} mfd[N];

struct UFD{
char nam[20]; //file name
enum att; //file attribute is read and readWrite
char len[recodeLen]; //recode length
int curLen; //current hold charaters numeric
FILE* add; //file address
}ufd[L];

struct UOF{
char nam[20]; //file name
enum att; //file attribute is read and readWrite
char len[recodeLen]; //recode length
fileStatus sta;
FILE* r_ptr;
FILE* w_ptr;
}uof[S];

#endif //pragma once


cpp文件:
#include <iostream>
#include "a.h"
using namespace std;

//mfd[0].nam="r1";

void iniMFD(){
mfd[0].nam="r1";
// mfd[0].d_a=0;
// mfd[0].count=0;

// add user
}
void iniUFD(){
}
bool matchUser(char name[]){
return true;
}

int main(){
system("pause");
return 0;
}
bargio_susie 2011-05-09
  • 打赏
  • 举报
回复
至于'mfd' : undeclared identifier这个错误就要看你有没包含那个定义那个结构的头文件了
bargio_susie 2011-05-09
  • 打赏
  • 举报
回复
strcpy(mfd[0].nam, "r1");
晨星 2011-05-09
  • 打赏
  • 举报
回复
这几行里似乎看不出毛病,需要更多上下文了。
头文件包含了吧?
题目1:写一个函数计算下列函数的值f(0),f(3),f(-3)。测试之 题目2:写一个函数可以打印下面的图案 * *** ***** ******* ***** *** * 要求每个打印语句只打印一个*号 ,测试之 题目3:写一个函数void maxMinAver(int *data, int *max, int *min,float * ave,int size), 求一组数据的最大值、最小值和平均值,测试之。其中data指向给定数据的数组的指针,max、min、ave分别指向最大值、最小值和平均值,size是数组的大小。 要求第一个实参是数组,第2、3、4个实参都是对普通的简单变量的某种操作,最后一个实参是数组的大小。测试之 题目4 写一个函数用指针型字符串实现两个字符串比较,int mystrcmp(const char *str1, const char *str2),如果大于返回1,等于返回0,小于返回-1,测试之 题目5写一个函数求求圆周率的近视值,精确到小数7位。计算公式是 题目6定义一个学生结构体,取别名STU,包含学号、姓名、数学、语文、计算机、英语等课程成绩,还有总分和平均分,写一个函数实现求一组学生每个学生各门课程的平均值,函数原型为float ave(STU stu[],int size)。测试之。 题目7 写一个函数能够从文件读入一组学生STU的信息,保存到一个结构体数组中。测试之 题目8 写一个函数能够输出某一学生结构体数组STU stu[10]的信息和每个人的总分、平均分到某一文本文件中,测试之。输出格式是: “%s %s %d %d %d %d %d %5.2f” 题目9 写一个函数能够打印输出学生结构体数组STU stu[10]的信息到屏幕上,测试之 题目10 写一个函数能够把一组学生成绩信息按总分进行排序,测试之。 题目11 写一个函数能够查找给定学号的学生成绩信息,如果找到打印成绩信息,如果没有,显示“not found!”.测试之。 题目12 设计一个界面函数,包含上述11个题目的调用,即 请选择 1 调用第一个函数(具体的函数名) 2 调用第二个函数(具体的函数名) 3 4 。。。 。。。 5 10 调用第10个函数(具体的函数名) 继续吗?输入y继续下一次选择,输入n结束 题目13 创建一个工程文件,包含三个文件,第一个是主函数所在的源文件,含有显示界面,选择1-10,调用不同的函数,第二个是各个函数所在的源文件,第三个是各个函数原型所在的头文件

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧