1/
2
外部函数:定义的函数能被本文件和其他文件访
31>默认情况下所有函数都是外部函数
42>整个程序中不允许有同名函数存在
5
6
内部函数:定义的函数只能被本文件访问
71>在不同文件中,允许定义同名的内部函数
8
9NOTE:注意声明和定义的区别
10
11static对函数的作用:
121>完整的声明内部函数
132>完整的定义内部函数
14
15extern对函数的作用:
161>完整的声明外部函数
172>完整的定义外部函数
18
/
19#include"one.h"
20
21intmain(void)
22{
23test();
24///此处调用test2()函数,编译器会报错,undefinedreferenceto''test2''
25//test2();///
因为
test2()
定义的是内部函数
只能在
one.c
中被调用,
main.c
无法调用
26
///其实可以间接调用test2()函数,因为test()函数和test2()函数是在同一个函数中被
27///定义的,所以可以通过test()函数间接调用test2()函数
28
29
30
return
0;
31}
32///如果此处在定义一个test()函数,则编译器会报错,multipledefinitionof
''test'',重复定义
33
/
34voidtest(void)
35{
36
37
}
38/
39
40///如果在此处定义一个staticvoidtest2()函数,但与one.c中staticvoidtest2()函数不是
41
///同一个函数,两者没有任何关系
42/
43staticvoidtest2()
44{
45
46}
47/
48
49
/
50运行结果:
51调用了test函数!
52调用了test2函数!
53
54Processreturned0(0x0)executiontime:0.043s
55Pressanykeytocontinue.
56/
57
1#ifndef__ONE_H__
2#define__ONE_H__
3
4#include
5
6
///声明一个外部函数
7///完整的声明一个外部函数
8//externvoidtest(void);
9///默认情况下声明一个外部函数是可以省略extern
10
void
test(
void
);
11
12staticvoidtest2(void);
13
14
15#endif//__ONE_H__
16
1#include"one.h"
2
3///完整的定义一个外部函数
4/
5externvoidtest(void)
6
{
7printf("调用了test函数\n");
8}
9/
10
11///默认情况下所有的函数都是外部函数,所以可以省略extern
12voidtest(void)
13{
14printf("
调用了
test
函数!
\n");
15test2();
16}
17
18
///定义一个内部函数
19staticvoidtest2(void)
20{
21printf("
调用了
test2
函数!
\n");
22}
23
24
25
one.h
one.c
|
|