[英]C program: implicit declaration of function and conflicting types
這是一個 function 計算兩個數字的除法。 所有變量和函數都聲明為 float。 但是,下面的代碼無法編譯,錯誤消息顯示“%f 需要雙精度類型的參數,但參數具有 int 類型”和“function 'div' 的隱式聲明”和“'div' 的沖突類型”。
#include <stdio.h>
#include <assert.h>
float div(float a, float b);
int main() {
float a = 5;
float b = 8;
printf("%f divided by %f is %f \n", a, b, div(a, b));
}
float div(float a, float b) {
assert(b != 0);
return a / b;
}
2018 C 標准在第 7 條討論了標准庫。C 2018 7.1.3 1 說:
…在以下任何子條款(包括未來的圖書館方向)和
errno
中具有外部鏈接的所有標識符始終保留用作具有外部鏈接的標識符。
在以下子條款之一 7.22.6.2 中, div
被描述為 function,因此是具有外部鏈接的標識符。
因此,它保留用作標准庫例程的名稱,C 標准未定義將其用於其他目的的程序的行為。
重命名您的 function。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.