繁体   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