配色: 字号:
static&extern对函数的作用
2014-04-01 | 阅:  转:  |  分享 
  
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

献花(0)
+1
(本文系Transistor2...首藏)