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
");
    fun();
    return 0;
}
void fun(){
    printf("helloworld
");
}

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
");
    fun();
    return 0;
}
void fun(){
    printf("helloworld
");
}

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

原文地址:https://www.cnblogs.com/gezi1007/p/13672693.html