我好奇地看了一下Emacs的源代码,发现一件惊人的事情!

C、C++和Java语言
头像
liu滔
帖子: 7211
注册时间: 2010-10-09 23:01
送出感谢: 5 次
接收感谢: 14 次

我好奇地看了一下Emacs的源代码,发现一件惊人的事情!

#1

帖子 liu滔 » 2011-02-10 21:10

今天晚上闲得发慌,于是乎突然觉得看看Emacs的源代码来学习一下也不错,学着熟悉一下Cscope和ECB什么的,然后再学学怎么编一个文本编辑器,但是无意间看到了惊人的东东~
Emacs里面的函数定义大多数是使用Old Style的C程序的写法的!
也就是说,它的参数列表里面没有先说明每个参数各是什么类型的,而是在写完了参数名后,在括号的下一行再写各个参数的类型声明的,对此,大家怎么看? :em06
头像
liu滔
帖子: 7211
注册时间: 2010-10-09 23:01
送出感谢: 5 次
接收感谢: 14 次

Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!

#2

帖子 liu滔 » 2011-02-10 21:14

我突然间有个想法,会不会是因为那些函数的参数太多了,所以写在一行的话不好看,所以就用上Old Style的风格拆开写了 :em09
头像
Strange
帖子: 1823
注册时间: 2006-05-19 9:54
来自: Shanghai
送出感谢: 2 次
接收感谢: 10 次

Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!

#3

帖子 Strange » 2011-02-10 21:42

因为emacs的目标是兼容更多的编译器,不仅它,vim也是用旧风格的定义,并且明确写到编码规范里的
ニンニク入れますか?
x60 with gentoo
头像
liu滔
帖子: 7211
注册时间: 2010-10-09 23:01
送出感谢: 5 次
接收感谢: 14 次

Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!

#4

帖子 liu滔 » 2011-02-11 0:30

Strange 写了:因为emacs的目标是兼容更多的编译器,不仅它,vim也是用旧风格的定义,并且明确写到编码规范里的
真的是这样子的吗?我还真的以为是因为参数太多了不好写才这么写的呢~不过C89都出了这么久了,连C99都有了,还要兼容那些特立独行的编译器吗——真的还有这种编译器的存在吗?
头像
Strange
帖子: 1823
注册时间: 2006-05-19 9:54
来自: Shanghai
送出感谢: 2 次
接收感谢: 10 次

Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!

#5

帖子 Strange » 2011-02-11 8:09

当然,世界上的机器很多,对应的编译器更多。
不是pc一种而已,为了保证他们的兼容性,不得不这样。
ニンニク入れますか?
x60 with gentoo
头像
liu滔
帖子: 7211
注册时间: 2010-10-09 23:01
送出感谢: 5 次
接收感谢: 14 次

Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!

#6

帖子 liu滔 » 2011-02-11 10:46

Strange 写了:当然,世界上的机器很多,对应的编译器更多。
不是pc一种而已,为了保证他们的兼容性,不得不这样。
也就是说这个世界上尚存在只支持老式的写法的编译器咯?那么是不是所有的年代久远的程序的源代码都是这么规定的啊?
头像
racnil
帖子: 288
注册时间: 2008-08-28 8:12
送出感谢: 0
接收感谢: 0
联系:

Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!

#7

帖子 racnil » 2011-02-12 1:13

好NB!!长知识了!!原来那样的写法是Old Style呀……
居然还有只支持那种格式的老编译器,唔~~好神奇~~
SLAX and Xorg(without any Window Managers)
It's fun!
头像
liu滔
帖子: 7211
注册时间: 2010-10-09 23:01
送出感谢: 5 次
接收感谢: 14 次

Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!

#8

帖子 liu滔 » 2011-02-12 10:48

racnil 写了:好NB!!长知识了!!原来那样的写法是Old Style呀……
居然还有只支持那种格式的老编译器,唔~~好神奇~~
噢噢,阁下也看过了Emacs的源代码了? :em09
头像
racnil
帖子: 288
注册时间: 2008-08-28 8:12
送出感谢: 0
接收感谢: 0
联系:

Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!

#9

帖子 racnil » 2011-02-12 16:12

没有没有,只是看到你的描述还有其他人的回答之后感觉好神奇~~ :em03
SLAX and Xorg(without any Window Managers)
It's fun!
forestchen
帖子: 41
注册时间: 2008-05-11 11:10
送出感谢: 1 次
接收感谢: 2 次

Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!

#10

帖子 forestchen » 2011-02-12 16:55

楼主的意思是这个形式吗?

代码: 全选

void func (arg1,arg2)
unsigned char arg1;
unsigned char arg2;
{
     statement;
}
我用的某个单片机的C编译器不支持这种方式
好像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 you’re 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滔
帖子: 7211
注册时间: 2010-10-09 23:01
送出感谢: 5 次
接收感谢: 14 次

Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!

#11

帖子 liu滔 » 2011-02-12 19:01

对啊,10楼的朋友,就是这样子写的 :em11
单片机?哥们您搞嵌入式的? :em03
forestchen
帖子: 41
注册时间: 2008-05-11 11:10
送出感谢: 1 次
接收感谢: 2 次

Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!

#12

帖子 forestchen » 2011-02-12 20:43

liu滔 写了:对啊,10楼的朋友,就是这样子写的 :em11
单片机?哥们您搞嵌入式的? :em03
是呀,有个项目是移植一个NEC单片机的程序到PIC上,结果这种声明方式的函数全都通不过,只能一个个地改过来.
头像
liu滔
帖子: 7211
注册时间: 2010-10-09 23:01
送出感谢: 5 次
接收感谢: 14 次

Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!

#13

帖子 liu滔 » 2011-02-12 22:17

forestchen 写了:
liu滔 写了:对啊,10楼的朋友,就是这样子写的 :em11
单片机?哥们您搞嵌入式的? :em03
是呀,有个项目是移植一个NEC单片机的程序到PIC上,结果这种声明方式的函数全都通不过,只能一个个地改过来.
写个程序来做这件事 :em04
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45
送出感谢: 0
接收感谢: 9 次

Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!

#14

帖子 fanhe » 2011-02-21 23:05

我觉得是历史原因
我居然没见过这个风格的
头像
liu滔
帖子: 7211
注册时间: 2010-10-09 23:01
送出感谢: 5 次
接收感谢: 14 次

Re: 我好奇地看了一下Emacs的源代码,发现一件惊人的事情!

#15

帖子 liu滔 » 2011-02-22 14:03

fanhe 写了:我觉得是历史原因
我居然没见过这个风格的
不会吧,讲C语言的书不是应该多多少少会提及的吗 :em20
回复

回到 “C/C++/Java”