首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 疑惑:C语言不允许函数嵌套定义,main函数里面可以么? [已结贴,结贴人:mifeixq]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mifeixq
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-19 10:55:49 楼主
    个人理解main也是函数,所以里面也不允许嵌套定义,但是测试确可以

    #include <stdio.h>

    int main(void)
    {
        int i;
        void f(int i){printf("%d\n",i);}
        f(3);
        printf("%p\n", &i); //测试SS位置
        return 0;
    }

    这个应该怎么理解呢
    ~   
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • coverallwangp
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 10:59:261楼 得分:0
    vc6里面编译不过,lz用的什么编译器?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mifeixq
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 11:09:282楼 得分:0
    ubuntu cc/gcc
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • iamliadai
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 12:53:333楼 得分:0
    gcc扩展语法  

    加上   -std=c99   -Wall   -pedantic   参数,你就可以编出最标准的程序了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mhyx_2008
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 19:21:464楼 得分:0
    main()函数是个特殊的函数,它里边可以定义函数。
    你不是也没有看见它被调用吗?但它却被执行了,我们只能看到它的定义,它本身是程序的入口。

    在main()函数里定义的函数只能在本文件里调用。
    在main()函数外定义的函数如果没有加static限定,就可以被外部文件调用。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lovexieli
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 19:37:365楼 得分:0
    在vc6出错!

    继续关注中!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • iamliadai
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 21:40:016楼 得分:0
    扯鸡巴蛋吧,误导大众[Quote=引用   4   楼   mhyx_2008   的回复:]
    main()函数是个特殊的函数,它里边可以定义函数。  
    你不是也没有看见它被调用吗?但它却被执行了,我们只能看到它的定义,它本身是程序的入口。  

    在main()函数里定义的函数只能在本文件里调用。  
    在main()函数外定义的函数如果没有加static限定,就可以被外部文件调用。
    [/Quote]
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lunarfan
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 09:19:357楼 得分:0
    标准里是不允许的。
    dev c++里的编译不通过a function-definition is not allowed here before '{' token
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mifeixq
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 09:20:318楼 得分:0
    本来以前一直认为不应该可以的,不过有人问我,我用linux尝试一下,结果竟然可以……

    学C我记得最清楚的一句就是函数不能嵌套定义……

    main()不也是函数嘛而且5楼说的也有点问题 main()内定义的函数只能在main()内调用,并不具有文件

    作用域

    测试代码:
    #include <stdio.h>

    void outofmain()
    {
        printf("out of main\n");
    }
    void test();
    int main(void)
    {
        void inmain()
        {
            outofmain();
            printf("in main\n");
        }
        inmain();
        test();
        return 0;

    }

    void test()
    {
        inmain();


    ERROR: in function test ---undefined reference to inmain
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lsd1025
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 10:45:109楼 得分:0
    VC6.0通不过!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hqin6
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 10:54:0510楼 得分:0
    没意义的问题嘛!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • guzhilei1986
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 11:19:4511楼 得分:0
    引用 10 楼 hqin6 的回复:
    没意义的问题嘛!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • iamliadai
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 12:17:1712楼 得分:0
    再说一遍   这是gcc世界的扩展语法采用的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jinjin666
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 15:24:1813楼 得分:0
    引用 10 楼 hqin6 的回复:
    没意义的问题嘛!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • thaij
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 01:21:3414楼 得分:10
    main函数是个特殊的函数,它是程序的入口,当然以嵌套别的function.
    在别的函数里是不行的。。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yeliguo12345
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 11:22:0415楼 得分:5
    支持14楼
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mhyx_2008
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 13:20:4716楼 得分:0
    抱歉,我确实没有说清楚。不好意思了...
    8楼和14楼说的对。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • seufl
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 19:32:5817楼 得分:0
    不是标准,是编译器特性
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhongjx
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 21:58:1518楼 得分:0
    估计你用的DEV C++吧?这个和编译器也有关系。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • synix521
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 22:13:3919楼 得分:5
    引用 15 楼 yeliguo12345 的回复:
    支持14楼
    修改 删除 举报 引用 回复

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