warning C4091: 'extern ' : ignored on left of 'int' when no variable is declared

huagong_adu 2009-02-18 12:20:46
我的main函数如下

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#include "structure.h"
#include "format.h"

void main()
{
format();
}


其中的structure.h文件如下

#ifndef _STRUCTURE_H
#define _STRUCTURE_H


#define READ_ONLY 1 //只读
#define WRITE_ONLY 2 //只写
#define RW 3 //读写

#define NOT_USED 0 //未被使用
#define USED 1 //被使用

#define ADMIN 1 //系统管理员
#define DEFULT 0 //普通用户

#define FILE 1 //文件
#define DIRECTORY 2 //目录

#define N_BLOCKS 15 //inode中磁盘块数组i_block的大小
#define NAME_LEN 128 //文件名的最大长度
#define FILE_NUM 256 //一个目录下可以拥有的文件(包括目录)的最大数目
#define MAX_USER_NUM 16 //该文件系统最大的用户数目

#define BLOCK_SIZE 1024 //盘块大小为 1KB
#define BLOCKS_GROUP_NUM 100 //盘块组的数目
#define BLOCKS_PER_GROUP 1000 //每组的盘块数
#define INODES_PER_GROUP 100 //每组的inode数
#define TOTAL_BLOCKS_NUM (BLOCKS_PER_GROUP*BLOCKS_GROUP_NUM) //总的盘块数
#define TOTAL_INODES_NUM (INODES_PER_GROUP*BLOCKS_GROUP_NUM) //总的inode数

#define FIRST_DATA_ADDR (sizeof(block_group)*BLOCKS_GROUP_NUM) //第一个数据块


/*
*超级块
*/
struct super_block
{...};


/*
*组描述符
*/
struct group_desc
{...};


/*
*inode
*/
struct inode
{...};


/*
*数据块组
*/
struct block_group
{...};


/*
*文件,包括文件名(普通文件或者目录)和inode号
*/
struct file_entry
{...};


/*
*目录,用于存储指定具体目录所包含文件(包括目录)的数目和具体的文件内容(即dir_entry)
*/
struct dir
{...};


/*
*用户
*/
struct user
{...};


extern FILE *fd;
extern struct block_group block_group[BLOCKS_GROUP_NUM];
extern struct user user[MAX_USER_NUM];
extern dir dir;

#endif


编译的时候老是出错,如下:
--------------------Configuration: simdisk - Win32 Debug--------------------
Compiling...
main.cpp
g:\operating system\课程设计\src\simdisk\structure.h(120) : warning C4091: 'extern ' : ignored on left of 'int' when no variable is declared
g:\operating system\课程设计\src\simdisk\structure.h(120) : error C2143: syntax error : missing ';' before 'constant'
g:\operating system\课程设计\src\simdisk\structure.h(120) : fatal error C1004: unexpected end of file found
Error executing cl.exe.
Creating browse info file...
BSCMAKE: error BK1506 : cannot open file '.\Debug\main.sbr': No such file or directory
Error executing bscmake.exe.

simdisk.exe - 3 error(s), 1 warning(s)


不知道哪里错了,请高手帮忙啊!!!
...全文
3679 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
huagong_adu 2009-02-18
  • 打赏
  • 举报
回复
我把所有变量名都该成了和结构体名字不一样后还是同样的错误,还是指向了这句

extern FILE *fd;
ysmashimaro 2009-02-18
  • 打赏
  • 举报
回复
大哥,你为什么把类型名和变量名都给起名dir呢,试一下:

extern struct dir dirvar;
huagong_adu 2009-02-18
  • 打赏
  • 举报
回复
这三处错误都指向了下面这行

extern FILE *fd;
huagong_adu 2009-02-18
  • 打赏
  • 举报
回复
这三处错误都指向了下面这行

extern FILE *fd;
huagong_adu 2009-02-18
  • 打赏
  • 举报
回复
我改成了
extern struct dir dir;
但还是不行啊
waizqfor 2009-02-18
  • 打赏
  • 举报
回复

struct dir//这里!!!!!!!!!!!!!!!!!!!!!!!!
{...};


/*
*用户
*/
struct user
{...};


extern FILE *fd;
extern struct block_group block_group[BLOCKS_GROUP_NUM];
extern struct user user[MAX_USER_NUM];
extern dir dir;//所以这里定义要改一下extern struct dir dir

#endif

zqz981 2009-02-18
  • 打赏
  • 举报
回复
强大!
ltc_mouse 2009-02-18
  • 打赏
  • 举报
回复
extern dir dir;
-------------------
should be:
extern struct dir dir;
疯哥哥 2009-02-18
  • 打赏
  • 举报
回复
上面已经说得很清楚了,FILE这个结构是C库stdio.h里面已经存在的.你的#define FILE 1有问题.

extern FILE *fd;//本身是要使用c库的FILE结构,但是被你的宏给改掉了.成了extern 1 *fd;

你可以把宏FILE和DIRECTORY加上前缀或者后缀,来跟C的FILE结构区分.
huagong_adu 2009-02-18
  • 打赏
  • 举报
回复
g:\operating system\课程设计\src\simdisk\structure.h(120) : warning C4091: 'extern ' : ignored on left of 'int' when no variable is declared
g:\operating system\课程设计\src\simdisk\structure.h(120) : error C2143: syntax error : missing ';' before 'constant'
g:\operating system\课程设计\src\simdisk\structure.h(120) : fatal error C1004: unexpected end of file found
Error executing cl.exe.

这三个是什么错误,而且都指向了这句
extern FILE *fd;
huagong_adu 2009-02-18
  • 打赏
  • 举报
回复
还是不行啊,我这个FILE是申明一个文件指针的,后面要用到fopen之类的函数,只是定义一个全局变量而已
ltc_mouse 2009-02-18
  • 打赏
  • 举报
回复
#define FILE 1 //文件
extern FILE *fd;
--------------------
因为这个?lz为什么要定义宏FILE呢?在预编译时就进行宏展开,这句变成了extern 1 *fd; 提示的错误应该是这个。Sorry,昨晚没认真看...

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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