社区
C语言
帖子详情
疑惑:C语言不允许函数嵌套定义,main函数里面可以么?
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;
}
这个应该怎么理解呢
~
...全文
3777
22
打赏
收藏
疑惑:C语言不允许函数嵌套定义,main函数里面可以么?
个人理解main也是函数,所以里面也不允许嵌套定义,但是测试确可以 #include int main(void) { int i; void f(int i){printf("%d\n",i);} f(3); printf("%p\n", &i); //测试SS位置 return 0; } 这个应该怎么理解呢 ~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
l676331991
2012-08-20
打赏
举报
回复
C99的特性。
就和Java有Java7,Java8一样。
VC6.0都是什么时代的编译器,大家查一查发布时间,用TC测不是更直接,简直无语?
C语言也在不断更新版本,扩充特性。
lidorje
2011-11-07
打赏
举报
回复
是编译器决定的吧。。
yitugang
2010-04-12
打赏
举报
回复
[Quote=引用 2 楼 mifeixq 的回复:]
ubuntu cc/gcc
[/Quote]
你的正确答案被淹没在一片口水中。
yeliguo12345
2008-08-21
打赏
举报
回复
支持14楼
synix521
2008-08-21
打赏
举报
回复
[Quote=引用 15 楼 yeliguo12345 的回复:]
支持14楼
[/Quote]
九十度黑
2008-08-21
打赏
举报
回复
估计你用的DEV C++吧?这个和编译器也有关系。
seufl
2008-08-21
打赏
举报
回复
不是标准,是编译器特性
thaij
2008-08-21
打赏
举报
回复
main函数是个特殊的函数,它是程序的入口,当然以嵌套别的function.
在别的函数里是不行的。。。。
mhyx_2008
2008-08-21
打赏
举报
回复
抱歉,我确实没有说清楚。不好意思了...
8楼和14楼说的对。
iamliadai
2008-08-20
打赏
举报
回复
再说一遍 这是gcc世界的扩展语法采用的。
guzhilei1986
2008-08-20
打赏
举报
回复
[Quote=引用 10 楼 hqin6 的回复:]
没意义的问题嘛!
[/Quote]
太乙
2008-08-20
打赏
举报
回复
没意义的问题嘛!
lsd1025
2008-08-20
打赏
举报
回复
VC6.0通不过!
mifeixq
2008-08-20
打赏
举报
回复
本来以前一直认为不应该可以的,不过有人问我,我用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
lunarfan
2008-08-20
打赏
举报
回复
标准里是不允许的。
dev c++里的编译不通过a function-definition is not allowed here before '{' token
jinjin666
2008-08-20
打赏
举报
回复
[Quote=引用 10 楼 hqin6 的回复:]
没意义的问题嘛!
[/Quote]
iamliadai
2008-08-19
打赏
举报
回复
gcc扩展语法
加上 -std=c99 -Wall -pedantic 参数,你就可以编出最标准的程序了
mifeixq
2008-08-19
打赏
举报
回复
ubuntu cc/gcc
coverallwangp
2008-08-19
打赏
举报
回复
vc6里面编译不过,lz用的什么编译器?
iamliadai
2008-08-19
打赏
举报
回复
1
扯鸡巴蛋吧,误导大众[Quote=引用 4 楼 mhyx_2008 的回复:]
main()函数是个特殊的函数,它里边可以定义函数。
你不是也没有看见它被调用吗?但它却被执行了,我们只能看到它的定义,它本身是程序的入口。
在main()函数里定义的函数只能在本文件里调用。
在main()函数外定义的函数如果没有加static限定,就可以被外部文件调用。
[/Quote]
加载更多回复(2)
C语言
函数
嵌套
定义
问题
几乎所有的
C语言
教材上都说
C语言
函数
可以
嵌套
调用,但不可以
嵌套
定义
。实际上,
函数
能否
嵌套
定义
与编译器有关,在GCC编译器下
嵌套
定义
没问题,可以正常运行,我在code blocks 和 Dev C++两个IDE(两者都用GCC)下测试了如下两个程序,都没问题: 1.
main
函数
中的
嵌套
定义
。 #include "stdio.h" int
main
() { int add(int a,int
C语言
嵌套
函数
封装替换,
函数
可以
嵌套
定义
但不能
嵌套
调用吗,
嵌套
函数
函数
可以
嵌套
定义
但不能
嵌套
调用吗一个
函数
可以被
定义
为
嵌套
的,但不能被称为
嵌套
的吗,不对,
函数
可以
嵌套
调用,但不能
嵌套
定义
。在
C语言
中,所有
函数
都是并行的,即
定义
函数
时相互独立,一个
函数
不从属于另一个
函数
,即
函数
不能
嵌套
定义
,但可以相互调用,但不能调用主
函数
。教程: windows 7系统的操作环境,C99版本,戴尔G3电脑。错,
函数
可以
嵌套
调用但不可以
嵌套
定义
。
C语言
函数
函数
是一段可重用的代码...
C语言
main
函数
中
嵌套
定义
函数
第一次写博客啊,心情好激动。。。 问题引入: 今天
c语言
---20
函数
的
嵌套
调用和链式访问、
函数
声明与
定义
函数
和
函数
之间是可以有机的组合的。 每一个
函数
都应该在大括号外面独立存在,
函数
之间是平等的,不能把一个
函数
定义
在另外一个
函数
的
里面
,就像下面的这种情况是绝对不
允许
出现的。 应该是下面的样子 一、
嵌套
调用 该程序的运行结果是:打印hello 再举个例子,代码如下: 代码的运行结果如下: 二、链式访问 把一个
函数
的返回值作为另外一个
函数
的参数。 示例一: 示例二:字符串拷贝
函数
的链式访问 在刚接触strcpy
函数
的时候,代码是这样编写的: 现在链式访问就可以将 strcpy(arr1,arr2); prin
C语言
中
函数
的
嵌套
和递归
函数
的
嵌套
调用 什么是
函数
的的
嵌套
?
函数
在
C语言
中,各个
函数
的
定义
都是相对独立的存在,在
函数
的内部可以调用其他的
函数
(这
里面
不包括
main
()
函数
)。这种调用过程叫做
函数
的
嵌套
(
函数
的
定义
部分不能
嵌套
)。 例子: 求两个整数的的最大公约数和最小公倍数。 问题分析 两个数的最小公倍数=两个数的乘积/两个数的最大公约数。 所以key就是最大公约数. 最大公约数求法思维图: 代码实现 #define...
C语言
70,011
社区成员
243,256
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章