Emacs里面的函数定义大多数是使用Old Style的C程序的写法的!
也就是说,它的参数列表里面没有先说明每个参数各是什么类型的,而是在写完了参数名后,在括号的下一行再写各个参数的类型声明的,对此,大家怎么看?

真的是这样子的吗?我还真的以为是因为参数太多了不好写才这么写的呢~不过C89都出了这么久了,连C99都有了,还要兼容那些特立独行的编译器吗——真的还有这种编译器的存在吗?Strange 写了:因为emacs的目标是兼容更多的编译器,不仅它,vim也是用旧风格的定义,并且明确写到编码规范里的
也就是说这个世界上尚存在只支持老式的写法的编译器咯?那么是不是所有的年代久远的程序的源代码都是这么规定的啊?Strange 写了:当然,世界上的机器很多,对应的编译器更多。
不是pc一种而已,为了保证他们的兼容性,不得不这样。
噢噢,阁下也看过了Emacs的源代码了?racnil 写了:好NB!!长知识了!!原来那样的写法是Old Style呀……
居然还有只支持那种格式的老编译器,唔~~好神奇~~
代码: 全选
void func (arg1,arg2)
unsigned char arg1;
unsigned char arg2;
{
statement;
}
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.
是呀,有个项目是移植一个NEC单片机的程序到PIC上,结果这种声明方式的函数全都通不过,只能一个个地改过来.liu滔 写了:对啊,10楼的朋友,就是这样子写的![]()
单片机?哥们您搞嵌入式的?
写个程序来做这件事forestchen 写了:是呀,有个项目是移植一个NEC单片机的程序到PIC上,结果这种声明方式的函数全都通不过,只能一个个地改过来.liu滔 写了:对啊,10楼的朋友,就是这样子写的![]()
单片机?哥们您搞嵌入式的?
不会吧,讲C语言的书不是应该多多少少会提及的吗fanhe 写了:我觉得是历史原因
我居然没见过这个风格的