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