原版C你好,来自Kernighan和Ritchie的世界程序未编译
我试图用克尼汉和里奇的书(C圣经)来学习C语言。在尝试使用tcc和MinGW(使用Windows)编译第一个问题时。它给了我一个错误信息。最详细的一个来自Min GW: helloworld.c:3:8:错误:在“(”标记)之前应为“)” 这是我的节目:原版C你好,来自Kernighan和Ritchie的世界程序未编译,c,printf,token,C,Printf,Token,我试图用克尼汉和里奇的书(C圣经)来学习C语言。在尝试使用tcc和MinGW(使用Windows)编译第一个问题时。它给了我一个错误信息。最详细的一个来自Min GW: helloworld.c:3:8:错误:在“(”标记)之前应为“)” 这是我的节目: main() ( printf("hello, world\n"); ) 据我所知,这本书一直沿用到最后。这本书现在过时了吗?我已经找过了,但仍然找不到我做错了什么。请帮忙 提前感谢!(blahblah;)与{blahblah;
main()
(
printf("hello, world\n");
)
据我所知,这本书一直沿用到最后。这本书现在过时了吗?我已经找过了,但仍然找不到我做错了什么。请帮忙
提前感谢!(blahblah;)
与{blahblah;}
不同,而且您的书可能有点过时(尽管代码应该可以学习,即使有些需要更改)。当前的标准C是
#include <stdio.h>
int main(void)
{
printf("hello, world\n");
return 0;
}
#包括
内部主(空)
{
printf(“你好,世界”\n);
返回0;
}
main(void)
也可以是main(int-argc,char*argv[])
如果您想读取命令行参数。您错误地使用了(
和)
而不是{
和}
。书中的代码大概有一个#include
语句,以便声明printf
您使用了括号而不是括号。它应该是
#include <stdio.h>
main() {
printf("hello, world\n");
}
#包括
main(){
printf(“你好,世界”\n);
}
函数正文开头和结尾的符号是大括号,而不是圆括号。它应该看起来像:
main()
{
printf("hello, world\n");
}
也就是说,这确实是非常过时的。main(){printf(“hello,world\n”)}你怎么敢说K&R写了不可编译的代码!!你用的是什么版本?我不相信任何版本会错过所需的
#include
:我的(第2页,第6页)没有:)上面写着版权1978,它一定是第1版。程序在第6页。@user1031369:必须是第一个,是的。我不知道第1版和第2版之间有什么特别的区别:(我不敢打赌K&R中的示例包括stdio.h
。K&R C有隐式原型,而且碰巧使用了printf()
适用于隐式原型。好吧,在书中它们看起来非常相似,但现在我可以看到了。天哪,我觉得自己太愚蠢了。谢谢!@Pascal:即使使用隐式原型,printf
也必须在作用域中有一个明确的原型,因为它是一个包含可变数量参数的函数。@pmg注意我说的是“这是printf()的用法@Pascal:I stand correct…我认为ANSI C之前的版本也要求使用变量数量的函数原型(即使没有使用与…
相关的变量).这是不是说这本书根本不值得使用?K&R具有历史意义,如果你想了解C的历史,它是一本有趣的读物,但它并不反映现代编码实践,甚至不反映语言的当前语法。使用这本书。这是值得的。让你的编译器尽可能多地发出警告,试着找出答案如果警告是由于语言的变化而问的,如果你被困了。好吧,老实说,我真的是在读它,目的是为了获得一些C++背景。我很欣赏快速反应。这是一个很棒的社区。C不是C++。它们是表兄弟,而不是孪生。没有提到任何包含的语句。但是在做了这些修改之后,程序现在就可以编译了。我认为有一本现代版的K&R书。