12月23日随笔
函数的嵌套调用和链式访问
嵌套调用很好理解,就是在一个子程序里调用另一个子程序。
void print(char *a){
printf("%s",a);
}
void hello(){
print("hello");
}
而链式访问就是把一个函数的返回值直接当作实参传递给下一个函数。
int ret = strlen(strcat("hello","world"));
上例中strcat 的返回值是char 类型,是目标串的首地址,而这个函数已然完成了自己的使命,连接了两个字符串为什么还要返回一个char 类型呢?原因就在于可以像上述表达式一样,进行链式访问。
函数的声明与定义
刚开始学习c语言的时候,所有源码都是写在一个源文件里的,当真正写工程项目以后,为了保证源代码隐私性,和结构清晰,就要把所有函数声明写在头文件里,把函数定义写在名称相对应的c文件里,然后使用的时候在主函数里include所使用的头文件就可以了。
此时的目录结构应该是这样的
头文件
add.h
源文件
add.c
test.c
之后如果要想把函数定义打包生成库文件,可以在vs2008编译环境下
- 右击左侧项目,属性,配置类型,选择静态库
- ctr + f5 生成 .lib 文件
- 如果要在其他程序中使用,需要项目文件夹里有头文件,和库文件
- 然后在程序代码之前加入
#pragma comment(lib, "Add.lib")
外部链接属性:由于函数具有此属性,因而可以在当前源文件以外的文件里访问。比如add.c 里面的add函数,可被test文件访问。而如果在定义add函数时加上 static ,那么该函数具有内部连接属性,就不能被其他源文件访问了。而在add函数内的任何局部变量都是无链接属性,不能被访问。**
extern关键字:保证变量只声明,不定义。
static关键字总结
- 修饰全局变量:改变链接属性(外->内)
- 修饰局部变量:改变生命周期
- 修饰函数:改变链接属性同上
测试驱动开发TDD
测试驱动开发,英文全称Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。这有助于编写简洁可用和高质量的代码,并加速开发过程。