Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 嵌套函数及其有用性,一个接一个调用的函数?_C_Function_Nested - Fatal编程技术网

C 嵌套函数及其有用性,一个接一个调用的函数?

C 嵌套函数及其有用性,一个接一个调用的函数?,c,function,nested,C,Function,Nested,我见过人们以这种方式编写代码: void function2() {..... ..more blah blah... .<I think i will stop nesting my function here>... ..blah blah. over and out.... } void function1() {..... ..blah blah... function2(); .... } void LCD_disp_main () { <automatic, s

我见过人们以这种方式编写代码:

void function2()
{.....
..more blah blah...
.<I think i will stop nesting my function here>...
..blah blah. over and out....
}

void function1()
{.....
..blah blah...
function2();
....
}

void LCD_disp_main ()
{
<automatic, static... variable declaration>
....
function1(); //calling a function 1
.....
}
void函数2()
{.....
…更多的废话。。。
....
等等等等,一遍又一遍。。。。
}
无效函数1()
{.....
……诸如此类。。。
函数2();
....
}
无效LCD显示主屏幕()
{
....
function1();//调用函数1
.....
}
与编写通常放在函数中并在此处内联的定义相反

   void LCD_disp_main ()
    {
    <automatic, static... variable declaration>
    ....
    <function1() and function2();> //instead of calling function1 and fucntion2 just inline it here.
    .....
    }
void LCD\u disp\u main()
{
....
//不要调用function1和Function2,只需在这里内联它。
.....
}
一个比另一个有什么好处?
第一个集合不是每次调用新函数时都会导致堆栈不断增长吗?尽管在选项2中会增长相同的装载量?上下文切换?

好吧,它是为了可读性、可维护性和遵守惯例,即一个函数应该只做一件事,并且做得很好,而且很多。想象一下,如果您将所有代码集中到一个函数中,您将如何编写一个函数。如果您非常担心堆栈帧的大小,为什么不在
main()
函数中编写所有内容


顺便说一句,这里不适用,它用于定义从处理器上交换进程/线程的过程

好吧,为了可读性、可维护性和遵守惯例,函数应该只做一件事,并且做得很好,还有很多。想象一下,如果您将所有代码集中到一个函数中,您将如何编写一个函数。如果您非常担心堆栈帧的大小,为什么不在
main()
函数中编写所有内容

顺便说一句,这里不适用,它用于定义从处理器上交换进程/线程的过程

这些都不是。的确,在一个糟糕的编译器上,它会浪费更多的堆栈。然而,将代码放入函数中可以使代码a)可重用,b)将相关的东西组合在一起

优化编译器将知道内联所有这些函数的内容,因此在这两种情况下生成的代码或多或少都是相同的-特别是如果函数是通过内部链接声明的(即关键字
static
)。

它们不是。的确,在一个糟糕的编译器上,它会浪费更多的堆栈。然而,将代码放入函数中可以使代码a)可重用,b)将相关的东西组合在一起


优化编译器将知道内联所有这些函数的内容,因此在这两种情况下生成的代码或多或少是相同的-特别是如果函数是通过内部链接声明的(即关键字
static
)。

在内存不足的硅状PIC10f上,最好使用最小的代码大小?在PIC32上,使用良好的编码风格可能更容易编写。在像PIC10f这样内存不足的硅芯片上,最好使用最小的代码大小?在PIC32上,使用良好的编码风格可能更容易编写。一些研究得出了这个结论,[link]()@newb7777链接中的第一个答案是肯·汤普森说的。我想这就足够让人类看到它的好处了:)一些研究得出了这个,[链接]()@newb7777你链接中的第一个答案是肯·汤普森说的。我认为这足以让全人类看到好处:)