在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的隐式声明。。。
关于c - 为什么在main中说函数的隐式声明? C程序设计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45531340/