社区
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;
}
这个应该怎么理解呢
~
...全文
3929
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语言
必知必会]初探
函数
相信在学校同学们看谭老师的教材的时候已经对
函数
有了“初步的认识”。但是,如果你没有理解下面这几个例子,那并不能说你对
函数
入门了。1.为什么要声明
函数
?#include<stdio.h> void swap(); int
main
() { int a = 0; int b...
c语言
swap交换
函数
_有哪些是学
C语言
要注意的?
看前点赞 养成习惯 学习编程,想看干货,关注公众号:不会编程的程序圆 [
C语言
必知必会]初探
函数
相信在学校同学们看谭老师的教材的时候已经对
函数
有了“初步的认识”。但是,如果你没有理解下面这几个例子,那并不能说你对
函数
入门了。1.为什么要声明
函数
?#include<stdio.h> void swap(); int
main
() { int a = 0; int b...
嵌入式
C语言
开发:标准库字符串与文件操作的安全实践与性能优化
在嵌入式系统开发中,内存管理与I/O操作是核心基础。
C语言
标准库提供了一套高度抽象、可移植的接口,用于处理字符串、内存和文件流,其本质是对底层硬件操作的封装。理解其工作原理,例如字符串以空字符结尾的表示方式与内存缓冲区的管理机制,是编写健壮代码的关键。这不仅能提升代码的可移植性和可维护性,更能有效规避内存溢出、数据错乱等致命风险。尤其在资源受限的嵌入式环境(如DSP56000)中,合理运用标准库
函数
并规避其陷阱,对于保障系统稳定性和实时性至关重要。本文聚焦于**字符串处理**与**文件操作**两大模块,深入
C++核心语法精讲:
函数
重载、引用、内联
函数
与auto关键字实战解析
在C++编程中,
函数
重载、引用、内联
函数
和auto关键字是提升代码效率与可维护性的核心语法特性。
函数
重载通过参数列表的差异实现同一
函数
名的多态行为,其原理基于编译时的名字修饰技术,有效统一了相似操作的接口,避免了冗长的
函数
命名。引用机制为变量创建别名,在
函数
传参时避免了不必要的拷贝,尤其配合const引用能兼顾效率与安全性,是理解后续类与拷贝控制的基础。内联
函数
以空间换时间,通过建议编译器在调用点展开
函数
体来消除
函数
调用开销,适用于简单且频繁调用的场景,是对
C语言
宏
函数
缺陷的优雅修正。auto关键字在C++
AgentRun CLI:用YAML
定义
Agent行为的标准化运行工具
Agent(智能体)作为AI应用落地的关键范式,其核心挑战在于从开发到生产环境的可移植性与可运维性。传统Agent框架常陷入可视化、低代码等全栈幻觉,忽视CLI命令行在CI/CD、脚本化部署和版本控制中的不可替代价值。AgentRun以YAML为唯一配置语言,通过声明式步骤编排、白名单安全表达式求值与Python SDK扩展机制,在保障安全性与可观测性的前提下,实现‘一行命令启动Agent’的技术承诺。它不替代LLM推理,而是聚焦交付链路中最痛的断点——让Agent像Docker容器一样被标准化运行、审计与
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章