我在使用#define
之前使用#include <stdio.h>
#define fakultet(x) ((x)>1?((x)*(fakultet(x-1))):(1))
int main(void) {
printf(fakultet(3));
}
声明该功能,但我仍然得到:
函数fakultet的隐式声明......
答案应该是6 ......
<input type="number" class="form-control" id="contactNumber" placeholder="8 Digits Contact Number" pattern="[0-9]{8}" required="" name="contactnumber">
答案 0 :(得分:6)
我用
声明了这个功能#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的隐式声明......