以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 编程心得 』 (http://bbs.xml.org.cn/list.asp?boardid=42) ---- 函数调用需要放在什么地方 (http://bbs.xml.org.cn/dispbbs.asp?boardid=42&rootid=&id=61015) |
-- 作者:piaowuxk -- 发布时间:4/7/2008 8:37:00 PM -- 函数调用需要放在什么地方 #include<stdio.h> void max(int a) {printf("%d",a);} max(4); void main() {} 我先定义一个函数max,然后调用这个函数,编译时报错 感觉程序是把max(4)看成声明去了。 void main() |
-- 作者:netjian -- 发布时间:4/10/2008 11:24:00 AM -- 是的。 但你在
中写的max(4),既谈不上是调用,也谈不上是声明。 调用不一定必须在函数内调用,但是,这个调用一定要与主函数main()有一定的关系: 在同一个代码文件中,声明必须进行在函数被定义之前,而在你的代码中,先对函数进行了定义,然后再进行了声明,这个不能再叫声明了。在此编译器认为你想对此函数进行一次重载,而且缺乏一个函数返回类型。 |
-- 作者:piaowuxk -- 发布时间:4/10/2008 5:16:00 PM -- thanks,有些明白了。
我觉得调用也不一定和主函数main()有一定的关系。如 感觉这个调用也没放到另外一个函数内调用,和main()也没什么关系
|
-- 作者:netjian -- 发布时间:4/11/2008 6:51:00 PM --
其实你上面的调用是与main函数有关系的。 你调试一下就看到清楚的过程了。 |
-- 作者:zhenghaona -- 发布时间:4/23/2008 9:22:00 AM -- 谢谢楼主 |
-- 作者:yangzhj05 -- 发布时间:4/24/2008 6:02:00 PM -- #include<stdio.h> int max(int a) {return a;} int b=max(4); void main() {printf("%d",b);} 你这一段代码可以编译通过么?我感觉貌似不可以 b是全局变量,初始化的时候后面的值是确定的,默认int为0.而你的是一个函数,函数的值返回值不确定。 用户态程序中的函数调用应该是和main函数有关,直接或间接调用,因为用户态程序初始化工作首先会初始化全局区,而全局区初始化的时候会分配内存,这些都是确定的,如果在全局去调用函数,就不知道分配空间大小,这应该是编译器不允许的。当然,如果在linux内核内编写程序就不一定了,因为在进入main函数前还有很多工作,比如初始化硬件的某些函数,这个时候和main函数没有关系
|
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
46.875ms |