C语言函数和程序结构
通过函数可以把大的计算任务分解成若干个较小任务,从而使得思路更加清晰,同时函数也大大提高了代码的复用率,提高了工作效率。要注意的是多函数之间应该尽可能地高聚合低耦合。另一方面,一个程序可以保存在一个或者多个源文件中。各个文件可以单独编译。
注意:一般地,头文件中不会放那些在程序运行时发生具体效应的语句。例如声明(定义)一个变量的语句是不会放在头文件中的。再例如结构体声明(定义)语句就可以放头文件里,但结构体变量声明(定义)语句是不会放在头文件中的。
make工具可以用来进行项目管理。他可以根据记录在Makefile文件中的要求完成整个编译过程。实际项目中Makefile文件内容复杂,往往还有可以制作Makefile文件的工具。
linux开源软件经典的软件安装步骤是直接从软件源程序开始的,步骤:
(1)make
(2)make install
(3)make clean
通过函数可以把大的计算任务分解成若干个较小任务,从而使得思路更加清晰,同时函数也大大提高了代码的复用率,提高了工作效率。要注意的是多函数之间应该尽可能地高聚合低耦合。另一方面,一个程序可以保存在一个或者多个源文件中。各个文件可以单独编译。
注意:一般地,头文件中不会放那些在程序运行时发生具体效应的语句。例如声明(定义)一个变量的语句是不会放在头文件中的。再例如结构体声明(定义)语句就可以放头文件里,但结构体变量声明(定义)语句是不会放在头文件中的。
make工具可以用来进行项目管理。他可以根据记录在Makefile文件中的要求完成整个编译过程。实际项目中Makefile文件内容复杂,往往还有可以制作Makefile文件的工具。
linux开源软件经典的软件安装步骤是直接从软件源程序开始的,步骤:
(1)make
(2)make install
(3)make clean
举例:
/*
Filename:add.h
*/
#ifndef __ADD_H__
#define __ADD_H__
void add(int, int);
#endif //__ADD_H__
/*
Filename: add.c
*/
#include "add.h"
int result;
void add(int a , int b)
{
result = a + b;
}
/*
Filename: sub.h
*/
#if !defined(__SUB_H__)
#define __SUB_H__
int sub(int, int);
#endif //__SUB_H__
/*Filename: sub.c
*/
#include "sub.h"
int sub(int a, int b)
{
return a - b;
}
/*
Filename: main.c
*/
#include "add.h"
#include "sub.h"
#include <stdio.h>
extern int result;// gcc直接使用语句int result;再次定义result不会被gcc报警告或者错误
int main()
{
add(10, 10);
printf("%d + %d = %d \n", 10, 10, result);
printf("%d - %d = %d \n", 10, 10, sub(10, 10));
return 0;
}
Makefile
a.out : add.o sub.o main.c
gcc -c main.c
gcc sub.o add.o main.o
add.o:add.c
gcc -c add.c
sub.o:sub.c
gcc -c sub.c
clean:
rm *.o a.out