我好奇地看了一下Emacs的源代码,发现一件惊人的事情!
- liu滔
- 帖子: 7212
- 注册时间: 2010-10-09 23:01
我好奇地看了一下Emacs的源代码,发现一件惊人的事情!
今天晚上闲得发慌,于是乎突然觉得看看Emacs的源代码来学习一下也不错,学着熟悉一下Cscope和ECB什么的,然后再学学怎么编一个文本编辑器,但是无意间看到了惊人的东东~
Emacs里面的函数定义大多数是使用Old Style的C程序的写法的!
也就是说,它的参数列表里面没有先说明每个参数各是什么类型的,而是在写完了参数名后,在括号的下一行再写各个参数的类型声明的,对此,大家怎么看?
Emacs里面的函数定义大多数是使用Old Style的C程序的写法的!
也就是说,它的参数列表里面没有先说明每个参数各是什么类型的,而是在写完了参数名后,在括号的下一行再写各个参数的类型声明的,对此,大家怎么看?
- liu滔
- 帖子: 7212
- 注册时间: 2010-10-09 23:01
Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!
我突然间有个想法,会不会是因为那些函数的参数太多了,所以写在一行的话不好看,所以就用上Old Style的风格拆开写了
- Strange
- 帖子: 1824
- 注册时间: 2006-05-19 9:54
- 来自: Shanghai
Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!
因为emacs的目标是兼容更多的编译器,不仅它,vim也是用旧风格的定义,并且明确写到编码规范里的
ニンニク入れますか?
x60 with gentoo
x60 with gentoo
- liu滔
- 帖子: 7212
- 注册时间: 2010-10-09 23:01
Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!
真的是这样子的吗?我还真的以为是因为参数太多了不好写才这么写的呢~不过C89都出了这么久了,连C99都有了,还要兼容那些特立独行的编译器吗——真的还有这种编译器的存在吗?Strange 写了:因为emacs的目标是兼容更多的编译器,不仅它,vim也是用旧风格的定义,并且明确写到编码规范里的
- Strange
- 帖子: 1824
- 注册时间: 2006-05-19 9:54
- 来自: Shanghai
Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!
当然,世界上的机器很多,对应的编译器更多。
不是pc一种而已,为了保证他们的兼容性,不得不这样。
不是pc一种而已,为了保证他们的兼容性,不得不这样。
ニンニク入れますか?
x60 with gentoo
x60 with gentoo
- liu滔
- 帖子: 7212
- 注册时间: 2010-10-09 23:01
Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!
也就是说这个世界上尚存在只支持老式的写法的编译器咯?那么是不是所有的年代久远的程序的源代码都是这么规定的啊?Strange 写了:当然,世界上的机器很多,对应的编译器更多。
不是pc一种而已,为了保证他们的兼容性,不得不这样。
- racnil
- 帖子: 288
- 注册时间: 2008-08-28 8:12
- 联系:
Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!
好NB!!长知识了!!原来那样的写法是Old Style呀……
居然还有只支持那种格式的老编译器,唔~~好神奇~~
居然还有只支持那种格式的老编译器,唔~~好神奇~~
SLAX and Xorg(without any Window Managers)
It's fun!
It's fun!
- liu滔
- 帖子: 7212
- 注册时间: 2010-10-09 23:01
Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!
噢噢,阁下也看过了Emacs的源代码了?racnil 写了:好NB!!长知识了!!原来那样的写法是Old Style呀……
居然还有只支持那种格式的老编译器,唔~~好神奇~~
- racnil
- 帖子: 288
- 注册时间: 2008-08-28 8:12
- 联系:
Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!
没有没有,只是看到你的描述还有其他人的回答之后感觉好神奇~~
SLAX and Xorg(without any Window Managers)
It's fun!
It's fun!
-
- 帖子: 41
- 注册时间: 2008-05-11 11:10
Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!
楼主的意思是这个形式吗?
我用的某个单片机的C编译器不支持这种方式
好像C99并不支持这种方式?
http://www.devx.com/tips/Tip/14356
代码: 全选
void func (arg1,arg2)
unsigned char arg1;
unsigned char arg2;
{
statement;
}
好像C99并不支持这种方式?
http://www.devx.com/tips/Tip/14356
The old-style function declaration was never supported in C++. However, it was supported in C for many years, until not long ago. Today, the recently approved C99 standard disallows old-style function declarations even in C. Yet legacy C code still contains this obsolete style. If youre porting legacy C code to C++ or to a C compiler that is C99-compliant, be prepared to change the old-style prototypes to the familiar style.
- liu滔
- 帖子: 7212
- 注册时间: 2010-10-09 23:01
Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!
对啊,10楼的朋友,就是这样子写的
单片机?哥们您搞嵌入式的?
单片机?哥们您搞嵌入式的?
-
- 帖子: 41
- 注册时间: 2008-05-11 11:10
Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!
是呀,有个项目是移植一个NEC单片机的程序到PIC上,结果这种声明方式的函数全都通不过,只能一个个地改过来.liu滔 写了:对啊,10楼的朋友,就是这样子写的
单片机?哥们您搞嵌入式的?
- liu滔
- 帖子: 7212
- 注册时间: 2010-10-09 23:01
Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!
写个程序来做这件事forestchen 写了:是呀,有个项目是移植一个NEC单片机的程序到PIC上,结果这种声明方式的函数全都通不过,只能一个个地改过来.liu滔 写了:对啊,10楼的朋友,就是这样子写的
单片机?哥们您搞嵌入式的?
- fanhe
- 帖子: 2357
- 注册时间: 2007-03-24 23:45
Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!
我觉得是历史原因
我居然没见过这个风格的
我居然没见过这个风格的
- liu滔
- 帖子: 7212
- 注册时间: 2010-10-09 23:01
Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!
不会吧,讲C语言的书不是应该多多少少会提及的吗fanhe 写了:我觉得是历史原因
我居然没见过这个风格的