发布网友 发布时间:2022-10-26 21:56
共5个回答
热心网友 时间:2023-10-11 11:15
标准的做法是:把所有函数声明放到最前面,全部声明完毕之后才是函数的具体实现。
举例如下:
#include<xxxxxx>
注意上面fun2实现里面调用了fun1, 而fun2实现却在fun1之前,
由于在最前面已经声明了fun1, 所以fun2这样调用fun1不会有问题。
把自定义函数的声明放到最前面的好处是,你完全不用考虑函数之间相互调用导致的函数实现顺序问题,因为全部都在前面声明了。
追问等我明天试下追答事实上,很早以前我学C的时候,都是要求把函数声明放在所有函数外面。参考一下编译器的头文件也都是这样做,我认为是标准写法。
书上把声明放到主函数里面确实会误导人,很显然在主函数内部声明某个函数,则这个声明只在主函数内部有效。对其他函数而言,如果也调用了这个函数,那么也需要在实现里声明调用的函数。既然这样,把所有函数声明放在所有函数之外的最前面就是最佳做法。
书上的写法没有考虑到各函数间相互调用的问题,默认只有主函数会调用这些函数,我个人不认可这种写法,以前我看过的书也没有这样写的。最近在网上看到很多人的代码用这种写法,我都觉得很奇怪,现在算是明白了,这种书确实非常误导人。
关于警告信息的问题,标准库里面兼容C的大部分字符串函数都没有做边界检查,容易发生溢出的问题,这是历史原因造成的。你现在只是学习,只要知道这回事并加以注意,还是用标准库函数好了。
热心网友 时间:2023-10-11 11:15
自定义函数多了,解决办法就是把函数单独写在一个头文件里,在主函数前包含这个头文件就行了;在自定义函数中调用另一个自定义函数,要保证被调用的自定义函数在主调函数前定义,否则就要在主调函数中声明。不然就存在你说的问题。追问你说“”在自定义函数中调用另一个自定义函数,要保证被调用的自定义函数在主调函数前定义“”追答在主函数中声明不能解决这个问题,若fun1在fun2后面定义,那么fun2要调用fun1的话得在fun2中声明fun1,否则只能将fun1定义在 fun2前面。我说的是在“主调函数中”声明,不是在“主函数”中声明……
热心网友 时间:2023-09-19 10:17
标准的做法是:把所有函数声明放到最前面,全部声明完毕之后才是函数的具体实现。
举例如下:
#include<xxxxxx>
注意上面fun2实现里面调用了fun1, 而fun2实现却在fun1之前,
由于在最前面已经声明了fun1, 所以fun2这样调用fun1不会有问题。
把自定义函数的声明放到最前面的好处是,你完全不用考虑函数之间相互调用导致的函数实现顺序问题,因为全部都在前面声明了。
追问等我明天试下追答事实上,很早以前我学C的时候,都是要求把函数声明放在所有函数外面。参考一下编译器的头文件也都是这样做,我认为是标准写法。
书上把声明放到主函数里面确实会误导人,很显然在主函数内部声明某个函数,则这个声明只在主函数内部有效。对其他函数而言,如果也调用了这个函数,那么也需要在实现里声明调用的函数。既然这样,把所有函数声明放在所有函数之外的最前面就是最佳做法。
书上的写法没有考虑到各函数间相互调用的问题,默认只有主函数会调用这些函数,我个人不认可这种写法,以前我看过的书也没有这样写的。最近在网上看到很多人的代码用这种写法,我都觉得很奇怪,现在算是明白了,这种书确实非常误导人。
关于警告信息的问题,标准库里面兼容C的大部分字符串函数都没有做边界检查,容易发生溢出的问题,这是历史原因造成的。你现在只是学习,只要知道这回事并加以注意,还是用标准库函数好了。
热心网友 时间:2023-09-19 10:17
自定义函数多了,解决办法就是把函数单独写在一个头文件里,在主函数前包含这个头文件就行了;在自定义函数中调用另一个自定义函数,要保证被调用的自定义函数在主调函数前定义,否则就要在主调函数中声明。不然就存在你说的问题。追问你说“”在自定义函数中调用另一个自定义函数,要保证被调用的自定义函数在主调函数前定义“”追答在主函数中声明不能解决这个问题,若fun1在fun2后面定义,那么fun2要调用fun1的话得在fun2中声明fun1,否则只能将fun1定义在 fun2前面。我说的是在“主调函数中”声明,不是在“主函数”中声明……
热心网友 时间:2023-09-19 10:18
以楼上的方法可以解决几乎所有的函数调用申明的问题。不能解决那就肯定是你代码写错了。贴下代码吧追问代码太长发不了
热心网友 时间:2023-09-19 10:19
你建的什么工程啊,这么牛叉。热心网友 时间:2023-09-19 10:19
可以将所有函数在main前声明,在main后实现热心网友 时间:2023-10-11 11:16
以楼上的方法可以解决几乎所有的函数调用申明的问题。不能解决那就肯定是你代码写错了。贴下代码吧追问代码太长发不了
热心网友 时间:2023-10-11 11:16
你建的什么工程啊,这么牛叉。热心网友 时间:2023-10-11 11:17
可以将所有函数在main前声明,在main后实现