
正文
c语言函数非法定义,c语言非法语句
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
为什么C语言不允许在函数内部定义函数?
1、是由于语法不支持造成在函数定义的内部不能定义函数。C语言中函数的定义都是相互平行、相互独立的,也就是说在函数定义时,函数体内不能包含另一个函数的定义,即函数不能嵌套定义,但可以 嵌套调用。嵌套函数,就是指在某些情况下,您可能需要将某函数作为另一函数的参数使用,这一函数就是嵌套函数。
2、不可以,即使主函数中也不可以,C语言只允许在函数中声明和嵌套调用。C语言中是不允许作嵌套的函数定义。因此程序中各个函数之间是平行的,不存在上一级函数和下一级函数的问题,这样是为了简化C语言编译器的逻辑性。
3、从标准规范来看:C语言允许函数里声明函数,但是不建议这么写,因为不利于多文档的组织。C语言禁止函数里定义函数,但是个别编译器却没遵循标准。C语言的标准和编译器的实现并不是完全统一,为了可移植性,建议一切都按C语言标准中推荐的做法来写。
相关问答
Q1: C语言作业.上面说“不能在这里定义函数”.怎么做.
首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。在test.cpp文件中,输入C语言代码:int fun(){return 1;}。编译器运行test.cpp文件,此时成功调用fun()函数输出了内容。
不能再一个函数内定义另一函数;void main(){ double fun(int n){ } } 是错误的。自己定义的函数要在main()声明 如 double fun(int n)——自己定义的函数的声明 void main(){ a= fun(b); } double fun(int n){ } 如果自己定义的函数在main()前定义c就不需声明。
C语言不允许在函数内部定义函数,这主要是由于几个设计上的考虑:静态作用域规则:C语言遵循静态作用域规则,这意味着变量和函数的作用域是在编译时确定的。如果在函数内部定义函数,那么这个内部函数的作用域将与外部函数重叠,这可能导致命名冲突和理解上的困难。
函教定义格式函数定义的一般格式为:返回类型 函数名 (类型参数1,类型参数2,…){ 函数体}也可以不含参数,不含参数时,参数表中可写关键字 void 或省略,为规范起见,教程中对没有参数的函数,参数表中统一写 void。
嵌套函数不在C标准里面,所以并不是所有C编译器都支持的。比如VC就不支持。
不可以,即使主函数中也不可以,C语言只允许在函数中声明和嵌套调用。C语言中是不允许作嵌套的函数定义。因此程序中各个函数之间是平行的,不存在上一级函数和下一级函数的问题,这样是为了简化C语言编译器的逻辑性。
Q2: c语言编译出现未定义的函数怎样解决?
1、根据你的源文件结构,个人推荐先单独编译源文件为多个object文件,再统一链接。
2、你把大括号的位置放错了,sushu函数被定义在了main函数里面,但是按照C语言的规定,函数不允许嵌套定义,所以你的sushu相当于没有定义(不知为何你的编译器没有报错说不允许在函数内定义函数)。解决方法是把你最后面多出来的大括号移到main函数最后面。
3、C语言没有bool类型,需要自己来定义,同时IsPrime函数的变量i重复定义了修改如下。
关于c语言函数非法定义和c语言非法语句的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






