在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);
```
當我們在做項目開發的時候,多使用最后一種方式,解釋太多無意,抽象定義,方便管理。