gpt4 book ai didi

command-line - 无法从 The C Programming Language 编译示例程序

转载 作者:太空宇宙 更新时间:2023-11-03 23:23:40 25 4
gpt4 key购买 nike

我知道用 Java 编程,但我正在阅读“C 编程语言”第二版。它说要从命令行编译和运行程序,你必须这样做:

$ cc hello.c  //assuming the name of the file is hello.c
./a.out

hello world 被打印出来。我试过了,效果很好。


现在,还有另一个打印摄氏温度和华氏温度的示例,所以我使用给定的代码创建了一个名为 TemperatureConverter.c 的文件。但是,在命令行中,当我运行时:

$ cc TemperatureConverter.c

我遇到了一个错误:

/usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../lib64/crt1.o: In function `_start': (.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status

我不知道这是什么意思。我尝试仔细检查我的语法,它看起来是正确的。我将给定代码的屏幕截图与我编写的代码进行了比较,以防有人注意到可能导致错误的差异:

Screenshot of the given code

#include <stdio.h>

main()
{
float fahr, celcius;
int lower, upper, step;

lower = 0;
upper = 300;
step = 20;

fahr = lower;
while (fahr <= upper) {
celcius = (5.0/9.0) * (fahr - 32.0);
printf("%3.0f %6.1f\n", fahr, celcius);
fahr = fahr + step;
}
}

最佳答案

我刚刚使用相同的命令在 cygwin 中运行了您的代码,它编译/运行良好。我会说其他人提到的相同内容。

  1. main 的返回类型为 int。
  2. 它的参数应该是 (void) 或 (int argc, **int argv)。您可以拥有 main(),但是这允许将任何参数传递给主函数。
  3. 第三,main函数应该以return 0结束;这表明程序正确退出。

最后应该是这样的

#include <stdio.h>

int main(void)
{
float fahr, celcius;
int lower, upper, step;

lower = 0;
upper = 300;
step = 20;

fahr = lower;
while (fahr <= upper) {
celcius = (5.0/9.0) * (fahr - 32.0);
printf("%3.0f %6.1f\n", fahr, celcius);
fahr = fahr + step;
}
return 0;
}

关于command-line - 无法从 The C Programming Language 编译示例程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32576063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com