标题:无法编译《UNIX环境高级编程》书中的程序清单1-2实例。
只看楼主
gameboy70949
Rank: 2
等 级:论坛游民
帖 子:6
专家分:25
注 册:2012-2-10
结帖率:50%
已结贴  问题点数:20 回复次数:5 
无法编译《UNIX环境高级编程》书中的程序清单1-2实例。
代码如下:
//
#include "apue.h"
#define BUFFSIZE 4096;

int
main(void)
{
    int     n;
    char    buf[BUFFSIZE];

    while ((n = read(STDIN_FILENO, buf, BUFFSIZE)) > 0)
        if (write(STDOUT_FIILENO, buf, n) != n)
            err_sys("write error");
    if (n < 0)
        err_sys("read error");

    exit(0);
}

//
编译器编译时提示出错:
gcc -Wall -c "1-2.c" (在目录 /home/chen/c++/UNIX 中)
1-2.c: 在函数‘main’中:
1-2.c:8:11: 错误: expected ‘]’ before ‘;’ token
1-2.c:10:33: 错误: ‘buf’未声明(在此函数内第一次使用)
1-2.c:10:33: 附注: 每个未声明的标识符在其出现的函数内只报告一次
1-2.c:10:38: 错误: expected ‘)’ before ‘;’ token
1-2.c:11:13: 错误: ‘STDOUT_FIILENO’未声明(在此函数内第一次使用)
编译失败。

我已经认真检查过代码与书上的一样了,其次其包含的apue.h头文件(书作者自己定义的头文件)以及error.c我已经复制到/usr/include。我上网搜索并没有人出现此错误?
不知到是否有人能够知道这问题出在哪里?还是我的编译环境有问题呢?
由于我是新手,所以我也清楚问题如何被导致的。我正在探索中。。
搜索更多相关主题的帖子: 编程 void expected include before 
2012-02-10 17:10
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:15 
#define BUFFSIZE 4096 去掉尾部的分号
2012-02-11 08:14
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:5 
慧眼呀。
2012-02-11 22:29
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
得分:0 
头文件在当前目录么?
2012-02-15 10:56
gameboy70949
Rank: 2
等 级:论坛游民
帖 子:6
专家分:25
注 册:2012-2-10
得分:0 
回复 2楼 rjsp
这个我真的看漏了!!犯了低级错误;
修改好第二行之后编译,还有错误。
这个源文件1-2.c:
#include "apue.h"
#define BUFFSIZE 4096

int
main(void)
{
        int     n;
        char    buf[BUFFSIZE];

        while ((n = read(STDIN_FILENO, buf, BUFFSIZE)) > 0)
                if (write(STDOUT_FIILENO, buf, n) != n)
                        err_sys("write error");
        if (n < 0)
                err_sys("read error");

        exit(0);
}

//
错误提示为:
chen@chen-Inspiron-M5010:~/c++/UNIX$ cc 1-2.c -o 1-2c
1-2.c: 在函数‘main’中:
1-2.c:11:13: 错误: ‘STDOUT_FIILENO’未声明(在此函数内第一次使用)
1-2.c:11:13: 附注: 每个未声明的标识符在其出现的函数内只报告一次
chen@chen-Inspiron-M5010:~/c++/UNIX$
。不知到大家有没有办法呢~至于头文件,已经添加好了。在lib/include里面了。
2012-02-15 21:51
gameboy70949
Rank: 2
等 级:论坛游民
帖 子:6
专家分:25
注 册:2012-2-10
得分:0 
各位,我看出来了,原来我又笔误了!!第八行那个“STDIN_FILENO”打成“STDIN_FIILENO”了!!不好意思了!!
2012-02-15 22:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-360701-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.310985 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved