c语言函数与指针复习
------------恢复内容开始------------
之前实习学linux kernel说系统调用起到一个分隔user space和kernel space的作用
函数的声明
关于函数声明这个概念一直没明白,java中没见到过
是这样的,c是从上往下执行的,如果函数写在main方法的上面则不用声明,相当于已经识别过一遍了。但是如果函数写在主函数的下面,编译器执行完主函数可能不去看下边的函数了,所以需要声明。(为啥java不需要?。。查了一下好像是java的编译器先进一些?)
3、声明的方法
什么时候需要声明
1)主调函数和被调函数在同一个.c 文件中的时候(可能回来会调用
老师说有些编译器高级的话可能也不需要声明??我试试我的
vscode虽然能把函数执行出来但还是会报错说需要声明
1] 直接声明法(常用)
将被调用的函数的第一行拷贝过去,后面加分号
#include <stdio.h> void fun(); int main(int argc, char const *argv[]) { printf("233333test\n"); fun(); return 0; } void fun(){ printf("helloworld\n"); }
2] 间接声明法
将函数的声明放在头文件中,.c 程序包含头文件即可
fun.h
extern void fun();
fun.c
#include <stdio.h> // void fun(); #include "fun.h" int main(int argc, char const *argv[]) { printf("233333test\n"); fun(); return 0; } void fun(){ printf("helloworld\n"); }
2)主调函数和被调函数不在同一个.c 文件中的时候
一定要声明
声明的方法:
直接声明法
将被调用的函数的第一行拷贝过去,后面加分号,前面加 extern(亲测不行。。。用下面那个)
update:我知道为什么不行了,我的vscode没有配置好。。。gcc命令后面只能跟一个单文件,不能多文件我晕
间接声明法(常用)
将函数的声明放在头文件中,.c 程序包含头文件即可(fun.c需要添加,main函数.c文件也要添加!)
#include "fun.h"
不行失败了 总是报错主函数中找不到那个外部方法
!!!!!!我才知道还得配置多文件 不然他总是gcc单文件运行
gcc fun.c fun1.h fun1.c -o fun
然后是函数.c文件包含.h头文件,头文件里写上对应函数的声明,参考这里
main函数.c文件中也要包含自定义.h头文件,如果用到方法的话。不在同一级目录的时候还得加上目录
哎呀不知道怎么搞这个setting.json文件使得gcc后面可以跟多个文件
还有makefile是什么啊。。。是只有Linux中才有吗?
------------恢复内容结束------------
......ljmtk