【发布时间】:2021-01-13 07:45:26
【问题描述】:
我复制了 Kernighan 和 Ritchie 1988 年出版的 The C Programming Language 一书第 15 页关于符号常量的脚本示例如下:
#include <stdio.h>
#define LOWER 0 /* lower limit of table */
#define UPPER 300 /* upper limit */
#define STEP 20 /* step size*/
/* print Fahrenheit-Celsius table */
main()
{
int fahr;
for (fahr = LOWER; fahr <= UPPER; fahr = fahr + STEP)
printf("%3d %6.1f\n", fahr, (5.0 / 9.0) * (fahr - 32));
}
但是,当我运行 gcc script.c 时,我得到:
fahr_symbolic.c:9:1: warning: type specifier missing, defaults to 'int'
[-Wimplicit-int]
main()
^
1 warning generated.
我做错了什么?
【问题讨论】:
-
您确定您复制的代码正确吗?您将
UPPER宏拼写为UPER。很明显的警告。LOWER有两个不同的定义,我希望第二个定义实际上是STEP。 -
此外,在 C99 及更高版本中 - 函数定义应明确提及其返回类型。不要依赖隐含的
int。 -
好吧....您的编辑现在完全改变了问题 - 它不再有任何意义,因为实际上没有任何问题。
-
@Chase。对不起,错别字。我更正了,仍然收到警告。隐含的
int是什么意思?你是在说UPPER、LOWER和STEP。因为这正是我无法理解的:在没有定义类型的情况下定义了这三个变量,我想知道这怎么可能 -
Modern C 可能是最新的书。也可以以 pdf 格式免费提供,或者您可以从该链接购买印刷书籍。这不是一本真正适合初学者的书,但 K&R 也不是。
标签: c compiler-errors symbolic-math kernighan-and-ritchie