在C语言中使用一个函数,必须声明它的返回值类型。由于C语言是强类型,所以函数的参数必须带有类型标识的。 下面说下C语言里面定义、声明函数的几种方式。 定义的方式 | 说明 ------- | ------- 函数定义声明 | 简单粗暴,简单测试使用 函数原型声明 | 适合单一文件,非常小的项目适用 在头文件里函数原型声明 | 如何你学习比较的开源项目,这种是最常见的,方便项目管理 下面都是定义了一个`test.c`文件 # 函数定义声明 ```c #include "stdio.h" void func(int i) { printf("%d\n", i); } int main(int argc, char const *argv[]) { func(1); return 0; } ``` # 函数原型声明 ```c #include "stdio.h" void func(int i);// 声明 int main(int argc, char const *argv[]) { func(1); return 0; } void func(int i) // 定义 { printf("%d\n", i); } ``` 变型 ```diff #include "stdio.h" - void func(int i); // 声明 + void func(int); // 没有行参名,只有参数类型也OK int main(int argc, char const *argv[]) { func(1); return 0; } void func(int i) // 定义 { printf("%d\n", i); } ``` # 在头文件里函数原型声明 ```c #include "stdio.h" #include "test.h" void func(int); int main(int argc, char const *argv[]) { func(1); return 0; } void func(int i) { printf("%d\n", i); } ``` 只是不过把上面的函数原型声明,统一放置到了在同级目录下的 `test.h` 里面。 ```c void func(int i); ``` 当我们在做项目开发的时候,多使用最后一种方式,解释太多无意,抽象定义,方便管理。