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