红联Linux门户
Linux帮助

一个简单的代码,编译后竟然出现那么多不可思议的错误

发布时间:2009-12-28 23:19:43来源:红联作者:yuchao668
[code]#include
#include

#define NEW_MOD S_IRUSR|S_IRGRP|S_IROTH
int main(void)
{
int fd ;
stat statbuf ;
mode_t mode ;

if(chmod("test.txt",NEW_MOD)==-1)
{
perror("fail to change mode");
exit(1);
}
if(stat("test2.txt",&statbuf)==-1)
{
perror("fail to stat");
exit(1);
}
mode=statbuf.st_mode;
mode &=(~ S_IRWXU & ~ S_IRWXG & ~ S_IRWXO);
mode |= (NEW_MOD);
if(chmod("test2.txt",mode)==-1)
{
perror("fail to change mode");
exit(1);
}
return 0;
}


[/code][code]gcc -o mode mod.c[/code]显示结果如下[code]mod.c: 在函数‘main’中:
mod.c:8: 错误:expected ‘;’ before ‘statbuf’
mod.c:14: 警告:隐式声明与内建函数‘exit’不兼容
mod.c:16: 错误:‘statbuf’未声明(在此函数内第一次使用)
mod.c:16: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
mod.c:16: 错误:所在的函数内也只报告一次。)
mod.c:19: 警告:隐式声明与内建函数‘exit’不兼容
mod.c:27: 警告:隐式声明与内建函数‘exit’不兼容
[/code]实在找不出那里错了。请大家帮帮忙。
文章评论

共有 4 条评论

  1. 地下发动机 于 2010-01-12 17:26:47发表:

    不是很明白

  2. two__fishes 于 2010-01-12 16:44:23发表:

    自建类型和函数看不到细节!

  3. lijiang 于 2010-01-10 08:39:23发表:

    [i=s] 本帖最后由 lijiang 于 2010-1-11 13:32 编辑 [/i]

    结构体变量statbuf应该定义为*,虽然我不了解编译系统定义的stat结构体,我查看了sys/stat.h

  4. lijiang 于 2010-01-09 23:19:42发表:

    [i=s] 本帖最后由 lijiang 于 2010-1-11 12:38 编辑 [/i]

    添加#include"stdlib.h"警告就没了