【发布时间】:2012-01-03 11:06:09
【问题描述】:
如果单独编译“函数”,则不会检测到不匹配,“函数”将返回一个双精度值,main 将其视为 int ... 根据我们所说的声明必须如何匹配这似乎令人惊讶。可能发生不匹配的原因是,如果没有函数原型,则函数在表达式中首次出现时会隐式声明,例如
sum += "the function"(line);
如果一个之前没有声明过的名字出现在一个表达式中并且后跟一个左括号,它被上下文声明为一个函数名,这个函数被假定返回一个 int,并且没有任何关于它的假定论据。
我事先为这个模棱两可的问题道歉,但这意味着什么?
顺便说一下,这是 Brian W. Kernighan 和 Dennis M. Ritchie 的 C 编程语言书第 2 版的第 73 页第 4.3 章。
【问题讨论】:
-
这是 K&R 中的哪个页面?但我认为你要问的问题是关于你声明函数/类型的默认整数,它们默认为
int。我认为此线程与您的问题重复:stackoverflow.com/questions/5885156/…