红联Linux门户
Linux帮助

关于gcc-4.3.2源代码中一语法问题

发布时间:2008-09-30 15:52:38来源:红联作者:lhfzu
今天看到gcc-4.3.2.tar.bz2源代码中关于_iobuf 的一行(00046),不知道是什么意思。具体如下:
\gcc-4.3.2\gcc\testsuite\gcc.c-torture\compile\920428-2.c

00036: extern struct _iobuf {
00037: int _cnt;
00038: char *_ptr;
00039: char *_base;
00040: int _bufsiz;
00041: short _flag;
00042: char _file;
00043: } _iob[ ];
00044: typedef unsigned long size_t;
00045: typedef char *va_list;
00046: struct _iobuf *(const char *filename, const char *type);
[attach]9626[/attach]

有些论坛上朋友说_iobuf是结构体,声明了一个外部变量。_iobuf是结构体这个我知道,但我还是不明白,
声明变量怎么会在一个括弧内部又带有"声明变量的形式",而且括弧外还有一个声明为指针的符号。
按这样理解那么:
int *(char *b , float *c);
这样的语句也是成立的吗?
文章评论

共有 1 条评论

  1. 黄富强 于 2008-09-30 17:11:58发表:

    46 struct _iobuf *fopen(const char *filename, const char *type);
    您看错了.
    extern struct _iobuf {
    int _cnt;
    char *_ptr;
    char *_base;
    int _bufsiz;
    short _flag;
    char _file;
    } _iob[];
    typedef unsigned long size_t;
    typedef char *va_list;
    struct _iobuf *fopen(const char *filename, const char *type);
    ...............
    http://www.google.cn/codesearch?hl=zh-CN&q=show:Z9QJLFLkEMA:I-8H6QTNXso:eVPYbJBsLG0&sa=N&ct=rd&cs_p=http://webauth.stanford.edu/source/libgcc-3.4.4.tar.bz2&cs_f=gcc-3.4.4/gcc/testsuite/gcc.c-torture/compile/920428-2.c&start=201

    [ 本帖最后由 黄富强 于 2008-9-30 17:18 编辑 ]