簡體   English   中英

為什么在main中說函數的隱式聲明? C程序設計

[英]Why does it say implicit declaration of function in main? C programming

我在使用main之前用#define聲明了該函數,但是我仍然得到:

函數fakultet的隱式聲明...

答案應該是6 ...

#include <stdio.h>

#define fakultet(x) ((x)>1?((x)*(fakultet(x-1))):(1))

int main(void) {
    printf(fakultet(3));
}

我用#define聲明了功能

您實際上是在聲明一個宏,而不是C函數:

#define fakultet(x) ((x)>1?((x)*(fakultet(x-1))):(1))

宏僅擴展一次。 因此,當您在代碼中使用fakultet時:

printf(fakultet(3));

擴展為:

printf(((3)>1?((3)*(fakultet(3-1))):(1)));

並且編譯器找不到名為fakultet()的C函數。 因此,您得到:

函數fakultet的隱式聲明...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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