簡體   English   中英

C 程序:function 和沖突類型的隱式聲明

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM