首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 很奇怪的C语言函数声明,估计见过的人不多,请教高手详细解释! [无满意答案结贴,结贴人:niphnet]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 10:23:39 楼主
    //xxxx.c
    #include "xxxx.h"
    int func(pama)
        elemtype pama;
    {
      ....
    }

    //xxxx.h

    extern int EXPORT func OF((elemtype pame));


    谁能解释一下这个声明是什么意思?
    注:此函数声明在Linux SSH的头文件中大量包含这种形式的函数声明!
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 10:25:111楼 得分:0
    用过两年C的都该见过 ...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 10:57:502楼 得分:0
    。。。。 我毕业后只用了1年零10个月。。。

    解释下啊 LS的哥哥
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 11:04:393楼 得分:0
    旧式的函数声明方式,现已废弃 但新标准为了保持兼容性,这种方式也合法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fetag
    • 等级:
    发表于:2008-04-22 11:09:374楼 得分:0
    这是一种老式的C语言,叫K&R语法,区别于现在的ANSI C,只要知道有这回事就行了,不用熟悉,也不用写
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sirdan
    • 等级:
    发表于:2008-04-22 11:12:055楼 得分:0
    同意楼上两位,这是一种过时的写法,现在不推荐这么用了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 11:15:506楼 得分:0
    以前的写法,现在不要用这种写法了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 11:20:477楼 得分:0
    旧式的函数申明方式,现在都不用了吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 15:14:098楼 得分:0
    //xxxx.c
    #include "xxxx.h"
    int func(pama)
        elemtype pama;          //函数参数声明
    {
      ....
    }

    //xxxx.h

    extern int EXPORT func OF((elemtype pame)); //对类型elemtype的声明,外部的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 20:28:029楼 得分:0

    int func(pama)
        elemtype pama;
    {
      ....
    }
    以上写法与如下写法完全一样:
    int func(elemtype pama) 
    {
      ....
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 20:39:0710楼 得分:0
    其实这种方式用的还是比较多的
    C/C++ code
    extern int EXPORT func OF((elemtype pame)); //对类型elemtype的声明,外部的


    不过这里边的EXPORT和OF宏在当前文件中要定义一下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 21:10:0611楼 得分:0
    extern 那个是gcc的扩展语法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 21:24:1812楼 得分:0
    过时的语法了,好像叫做K&C吧,现在都是ANSI C了。
    如果两种混着用,还有可能出问题呢。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 21:30:4013楼 得分:0
    听人说起过这种方式
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 21:35:3014楼 得分:0
    long long ago ……
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 21:38:0915楼 得分:0
    这是一种老式的C语言,叫K&R语法,区别于现在的ANSI C,只要知道有这回事就行了,不用熟悉,也不用写
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • akirya
    • 等级:
    发表于:2008-04-22 21:42:4116楼 得分:0
    不奇怪,见过很多
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 22:00:2017楼 得分:0
    extern int EXPORT func OF((elemtype pame));

    这种写法真奇怪。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 22:04:1318楼 得分:0
    没见过
    没用过
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 23:18:5719楼 得分:0
    学习了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-22 23:52:0020楼 得分:0
    学习了!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-23 09:05:1221楼 得分:0
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-23 09:07:1922楼 得分:0
    回帖是一种美德!传说每天回帖即可获得 10 分可用分!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-23 09:10:4523楼 得分:0
    K&R


    原来见过的人很多……
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-23 10:13:4924楼 得分:0
    受不了mLee79 这样的,知道就说,不知道就拉到,说什么“用过两年C的都该见过 ...”  您这是在显耀呢还是怎么的  SX
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-23 10:22:2725楼 得分:0
    LS的SB找抽啊..
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-23 10:28:0626楼 得分:0
    引用 24 楼 lekonpeng 的回复:
    受不了mLee79 这样的,知道就说,不知道就拉到,说什么“用过两年C的都该见过 ...”  您这是在显耀呢还是怎么的  SX


    的确难受。

    我也只是在K&R的c语言教材里边看过这个语法, 不过K&R在教材上也不建议这么用了。
    真正的例子, 在 一塌糊涂BBS 的源代码里看到过。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • i_ktse
    • 等级:
    发表于:2008-04-23 11:28:2127楼 得分:0
    我已经背弃C Lau一年N个月了
    所以还是不懂
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-23 11:37:2928楼 得分:0
    呵呵 记得以前上数据结构课 老师有这样写过
    将函数声明中的形式参数单独拿出来写

    C/C++ code
    int MaxValue(Value1,Value2) int Value1,int Value2 { ...... }

    上面这样是旧式的写法

    等同于 
    C/C++ code
    int MaxValue(int Value1,int Value2) { ...... }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-23 13:28:1929楼 得分:0
    以前的写法,现在不要用这种写法了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-23 14:03:5530楼 得分:0
    引用 10 楼 fallening 的回复:
    其实这种方式用的还是比较多的

    C/C++ code
    extern int EXPORT func OF((elemtype pame)); //对类型elemtype的声明,外部的


    不过这里边的EXPORT和OF宏在当前文件中要定义一下


    同意,

    extern int i; //extern全局声明关键字
    static int j; //static声明为只当前文件可用,改变其连接性质

    void func()
    {
    static int k; //static声明k在data区分配空间,改变其存储性质
    ............
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-01 00:36:1131楼 得分:0
    没遇到过这种情况.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-01 07:00:0632楼 得分:0
    接分先!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-01 07:20:0233楼 得分:0
    学习了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-04 14:09:3934楼 得分:0
    学习了!
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved