今天看到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);
这样的语句也是成立的吗?
黄富强 于 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 编辑 ]