一,定義:

1,作用:

告訴編譯器有一個函數叫什麼,參數是什麼,返回類型是什麼,但具體是不是存在,函數聲明決定不了。(函數定義決定)


2,用法:

當你在編寫代碼時,將自定義的函數放在了調用後面,如下圖:

【C語言】C語言中的隱式函數聲明_#算法

編譯器是從上往下運行,它在調用之前找不到自定義的函數,就會報錯,這個時候就需要在調用函數之前聲明一下,如下:

【C語言】C語言中的隱式函數聲明_#函數聲明_02


3,另一種用法:

這個是今天比較想記的,本人是在跟着鵬哥C語言學習的萌新,在編寫這節課的代碼時明明每個代碼都與老師的一模一樣,但是卻運行不了,於是去問了文心一言,AI給出的修正方法並沒有用,着實讓我疑惑了好一會兒,這個一會兒説,先講一下這種用法:

函數的聲明一般要放在頭文件中。

意思是將自定義函數寫在一個文件名為add.c的文件中,函數聲明寫在一個文件名為add.h的文件中,主函數寫在一個text.c(自定義)的文件名中,當使用此自定義函數時,只需要在text.c的頭文件中包含一下。

首先,展示老師的代碼:(調用自定義代碼時用""引用)

【C語言】C語言中的隱式函數聲明_#c語言_03

【C語言】C語言中的隱式函數聲明_#初學_04

【C語言】C語言中的隱式函數聲明_#算法_05

但是我的電腦並未成功運行,詢問文心一言後,文心一言給出的代碼如下:

text.c中的代碼是:

#include <stdio.h>
#include "add.h"  // 確保add.h中聲明瞭Add函數

int main()
{
    int a = 0;
    int b = 0;
    scanf("%d %d", &a, &b);
    int sum = Add(a, b);
    printf("%d\n", sum);
    return 0;
}

add.h中的代碼是:

#ifndef ADD_H
#define ADD_H

int Add(int x, int y);

#endif

add.c中的代碼是:

#include "add.h"

int Add(int x, int y) {
    return x + y;
}

我將其複製並覆蓋了原代碼,但是還是運行不了,於是我試着將#include "add.h"改為#include "add.c"發現可以運行了,如下:

【C語言】C語言中的隱式函數聲明_#函數聲明_06

我又試着將add.h刪除後再次運行,如下

【C語言】C語言中的隱式函數聲明_#include_07

發現依舊可以,不知道為什麼運行不了老師的代碼,或許是軟件的更新,或許是代碼的更新,又或許是我的C語言環境配置的與老師不同,還是有問題?希望在能在後面的學習中對C語言有更深的理解,可以解答這個疑問。