首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

复习

1.  C语言产生个人库的功能提供了封装抽象数据类型的方法。

2.  将库定义分为头文件和实现文件为库函数做什么与它们如何做提供了自然区分的说明。

3.  定义宏是为常用的语句或操作提供一个名称。

4.  exit函数允许提前终止程序执行。

5.  条件编译提供了为不同实现定制代码的方法,以及产生防止重复包含的库的头文件的方法。

6.  设计带参数argc和argv的函数main使命令行参数得以使用。

7.  库函数必须拥有有意义的名称和已明确定义的接口,并尽可能独立于全局定义的常量。

新的C语言结构

结  构

作  用

头文件(带有#if...#endif指令)

/* somelib.h */

#if  !defined  (SOMELIB_H_INCL)

#define  SOMELIB_H_INCL

#define  SOMELIB_MAX  20

typedef  struct {

somelib.h是可以包含(#include "somelib.h")在任何希望使用其内容的程序中的头文件。somelib.h使用条件编译(#if...#endif)防止其内容重复包含

(续)

结  构

作  用

  int   comp;

  char  s[SOMELIB_MAX];

} some_t;

/* Purpose of function make_some

 */

extern some_t

make_some(int   n,

const char str[]);

/* other extern prototype */

#endif

实现文件

/* somelib.c */

#include "somelib.h"

#include <string.h>

/* Purpose of function make_some

 */

some_t

make_some(int   n,

const char str[])

{

some_t  result;

result.comp=n;

strcpy(results.s, str);

return(result);

}

/* other function definitions */

somelib.c是与somelib.h相关的实现文件。它的目标文件必须链接到其他任何包含somelib.h的程序中

宏定义及调用

#define AVG(x,y) (((x)+(y))/2.0)

ans=AVG(2*a,b);

预处理器会将每个AVG调用替换为它的宏扩展。给出的语句会变为

ans=(((2*a)+(b))/2.0);

exit函数

/* Compute decimal equivalent of a

 * Common fraction

 */

double

dec_equiv(int num, int denom)

{

   if(denom==0) {

      printf("Zero-divide: %d/%d\n",

num, denom);

      exit(1);

   } else {

       return((double)num/

               (double)denom);

     }

}

如果以一个非法参数调用函数会提前终止程序

函数main的参数

int

main(int argc, char *argv[])

{

   if(argc==3)

     process(argv[1], argv[2]);

   else

     printf

       ("Wrong number of options\n");

   return(0);

}

函数main希望传递两个命令行参数到函数process

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论