LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1291|回复: 2

请教gcc-4.3.2源代码中一语法问题

[复制链接]
发表于 2008-9-30 16:05:34 | 显示全部楼层 |阅读模式
今天看到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);


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2008-10-4 06:34:12 | 显示全部楼层
不知LZ的代码哪里来的?
我是的确看不懂那句代码,却又特别好奇,那样的代码也可以通过编译?
手头没有GCC4.3.2的代码,于是乎特意去下了它的testsuite部分,46行那句明明是:
struct _iobuf *fopen(const char *filename, const char *type);
嘛!而且根据官方svn记录来看,这个920428-2.c最后一次更新也是在7个多月之前了啊。见http://gcc.gnu.org/viewcvs/branches/gcc-4_3-branch/gcc/testsuite/gcc.c-torture/compile/920428-2.c?view=log
回复 支持 反对

使用道具 举报

发表于 2008-10-6 13:58:48 | 显示全部楼层
哈,那不是函数指针吗?C里面写成员方法时就这样用。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表