函数声明:
- 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数声明决定不了。
- 函数的声明一般出现在函数的使用之前。要满足先声明后使用。
- 函数的声明一般放在头文件中。
函数定义:
函数的定义是指函数的具体实现,交待函数的功能实现。
#include <stdio.h>
// int add(int, int);
int main()
{
int a, b;
a = 0;
b = 0;
scanf("%d %d", a, b);
int sum = add(a, b); // 函数引用;
printf("%d\n", sum);
return 0;
}
// 函数声明及定义;
int add(int x, int y)
{
return x + y;
}
代码可以运行,生成 .exe 文件,但是报出警告:
原因是,程序在执行过程中会从上往下扫描一遍,当执行到主函数中的 add() 函数时,发现上文中没有见到过该函数,所以会报警告,但是随着向下扫描,还是找到了add() 函数,程序顺利执行。
为了解决上述问题,有两种方法:
- 函数定义放在主函数之前;
- 在主函数之前声明函数,在下文中对函数进行定义
// 函数声明及定义;
int add(int x, int y)
{
return x + y;
}
int main()
{
int a, b;
a = 0;
b = 0;
scanf("%d %d", a, b);
int sum = add(a, b); // 函数引用;
printf("%d\n", sum);
return 0;
}
// 函数声明;
int add(int, int);
int main()
{
int a, b;
a = 0;
b = 0;
scanf("%d %d", a, b);
int sum = add(a, b); // 函数引用;
printf("%d\n", sum);
return 0;
}
// 函数实现;
int add(int x, int y)
{
return x + y;
}
.h 头文件中进行函数声明
// test.h
#ifndef __TEST_H__
#define __TEST_H__
//函数的声明
int Add(int x, int y);
#endif //__TEST_H__
.c 文件中进行函数定义
// test.c
#include "test.h"
//函数Add的实现
int Add(int x, int y)
{
return x+y;
}
.c 文件,函数实现 .lib 静态库编译
静态库导入