在对应的global.h头文件的内容则为:
#ifndef _GLOBAL_H /* please insure _GLOBAL_H unique */
#define _GLOBAL_H /* avoid quotation iterativly */
#ifdef __cplusplus
extern "C" {
#endif /*__cplusplus */
/* for example, declare two vars */
extern int VarDesc;
extern char Array[];
/* other external vars declaration */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _GLOBAL_H */
此外,在实际的编程中,这两个文件头部还应当有公司copyright声明、文件功能说明、版本说明、创建、修改历史等。
逆风者 2、函数的定义和使用
根据C语言标准,函数只能被定义一次,而且在函数中,不能再定义函数,因此函数本身是外部的。
2.1 函数的定义与声明
定义函数是给出函数体的函数描述。一个函数只有在声明之后才能被引用。函数声明中,需给出函数名、返回类型、参数列表等。
函数的作用域从其声明处开始一直到其所在的被编译的文件的末尾,如果一个函数在定义之前就要使用到,或者这个函数定义在与所要使用它的源文件不相同的源文件中,那么就需要在使用该函数前,使用关键字extern声明该函数,但由于函数默认是external的,因此函数声明前的extern可以省略,这也是标准库函数的头文件中,函数声明前没有extern的原因,但在实际的编程中,一般不推荐这样做,应当在函数声明前加上extern。
2.2 函数的组织和使用
如果某个函数需要引用另一个函数,则需要在引用该函数前声明被引用的函数,否则可能会导致函数未定义错误。
为了避免被引用函数的重复声明和方便函数的引用,在实际的编程之中,采用在对应的头文件中,统一声明函数的方式。需要引用某一个函数时,只需要在该函数的定义源文件中包含被引用函数的头文件即可。
在实际的编程中,在头文件中声明函数,即声明函数原型,在对应的C源文件中,定义函数及其实现代码。
因此,函数说明的头文件内容和格式为:
#ifndef _FUNCNAME_H /* please insure _ FUNCNAME _H unique */
#define _ FUNCNAME _H /* avoid quotation iterativly */
#ifdef __cplusplus
extern "C" {
#endif /*__cplusplus */
/* for example, declare functions */
extern int func (int, int, int);
/* of course, maybe declare functions like below
* int func (int, int, int);
*/
/* other functions declaration */
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _ FUNCNAME _H */
而在对应的C源文件内容为:
#include " funcname.h"
/* for example, define two vars */
int func (int a, int b, int c)
{
// functions body
}
/* other functions define */
在实际的函数头文件和定义文件中还应当包含相应的头文件等,以及公司copyright声明、文件功能说明、版本说明、创建、修改历史等。对于具体的函数,还应当有函数说明、输入参数说明、返回说明、例外等。3、静态外部变量和函数
如果某外部变量和函数仅供它们各自所在的源文件中的函数使用,而不能被其他函数访问,那么就必须使用static关键字定义外部变量和函数。static说明适用于外部变量与函数,用于把这些对象的作用域限定为被编译源文件的剩余部分。通过外部static对象,可以把一些外部变量和函数隐藏在某个源文件中,使得这些外部变量和函数仅仅可以被该源文件使用和共享,但不能被该源文件之外的函数所引用。
另外,static说明也可以用于说明内部变量。内部静态变量就像自动变量一样局部于某一个特定函数,只能在该函数中使用,但与自动变量不同的是,不管其所作函数是否被调用,它都是一直存在的,而不像自动变量那样,随着所在函数的调用与退出而存在与消失。换而言之,内部静态变量是一种只能在某一特定函数中使用的但一直占据存储空间的变量。
本文章更多内容:<<上一页 - 1 - 2 - 3 - 下一页>> |