MyException - 我的异常网
当前位置:我的异常网» C语言 » 这种定义函数的步骤没见过,有没有人知道这是什么写法

这种定义函数的步骤没见过,有没有人知道这是什么写法

www.MyException.Cn  网友分享于:2014-10-29  浏览:0次
这种定义函数的方法没见过,有没有人知道这是什么写法?
在网上找到一个开源代码,发现里面的函数很奇怪,是这种样子的
int main(argc,argv)
    int argc;
    char *argv[];
{
    .......
}


常见的都是这样写的
int main(int argc,char *argv[])
{
    ....
}



------解决思路----------------------
这是c语言的K&R 定义方式,在C语言早期是用这种方式的,后来才变成我们常用的这种。

http://blog.chinaunix.net/uid-7426920-id-2627743.html

 你的代码应该是很古老的代码了。
------解决思路----------------------
C Function Definitions
A function definition specifies the name of the function, the types and number of parameters it expects to receive, and its return type. A function definition also includes a function body with the declarations of its local variables, and the statements that determine what the function does. 

Syntax

translation-unit :

external-declaration
translation-unit external-declaration

external-declaration : /* Allowed only at external (file) scope */

function-definition
declaration

function-definition : /* Declarator here is the function declarator */

declaration-specifiersopt attribute-seqopt declarator declaration-listopt compound-statement 
/* attribute-seq is Microsoft Specific */

Prototype parameters are:

declaration-specifiers :

storage-class-specifier declaration-specifiers opt 
type-specifier declaration-specifiers opt
type-qualifier declaration-specifiers opt

declaration-list :

declaration
declaration-list declaration

declarator :

pointeropt direct-declarator

direct-declarator : /* A function declarator */ 

direct-declarator ( parameter-type-list ) /* New-style declarator */
direct-declarator ( identifier-list opt ) /* Obsolete-style declarator */

The parameter list in a definition uses this syntax: 

parameter-type-list : /* The parameter list */

parameter-list
parameter-list , ...

parameter-list :

parameter-declaration
parameter-list , parameter-declaration

parameter-declaration :

declaration-specifiers declarator
declaration-specifiers abstract-declarator opt

The parameter list in an old-style function definition uses this syntax:

identifier-list : /* Used in obsolete-style function definitions and declarations */

identifier
identifier-list , identifier

The syntax for the function body is:

compound-statement : /* The function body */ 

{ declaration-list opt statement-list opt }

The only storage-class specifiers that can modify a function declaration are extern and static. The extern specifier signifies that the function can be referenced from other files; that is, the function name is exported to the linker. The static specifier signifies that the function cannot be referenced from other files; that is, the name is not exported by the linker. If no storage class appears in a function definition, extern is assumed. In any case, the function is always visible from the definition point to the end of the file. 

The optional declaration-specifiers and mandatory declarator together specify the function’s return type and name. The declarator is a combination of the identifier that names the function and the parentheses following the function name. The optional attribute-seq nonterminal is a Microsoft-specific feature defined in Function Attributes. 

The direct-declarator (in the declarator syntax) specifies the name of the function being defined and the identifiers of its parameters. If the direct-declarator includes a parameter-type-list, the list specifies the types of all the parameters. Such a declarator also serves as a function prototype for later calls to the function. 

A declaration in the declaration-list in function definitions cannot contain a storage-class-specifier other than register. The type-specifier in the declaration-specifiers syntax can be omitted only if the register storage class is specified for a value of int type. 

The compound-statement is the function body containing local variable declarations, references to externally declared items, and statements. 

The sections Function Attributes, Storage Class, Return Type, Parameters, and Function Body describe the components of the function definition in detail. 

文章评论

程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
程序员的鄙视链
程序员的鄙视链
程序员应该关注的一些事儿
程序员应该关注的一些事儿
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
编程语言是女人
编程语言是女人
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
Java程序员必看电影
Java程序员必看电影
旅行,写作,编程
旅行,写作,编程
我是如何打败拖延症的
我是如何打败拖延症的
代码女神横空出世
代码女神横空出世
一个程序员的时间管理
一个程序员的时间管理
每天工作4小时的程序员
每天工作4小时的程序员
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
漫画:程序员的工作
漫画:程序员的工作
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
程序员必看的十大电影
程序员必看的十大电影
程序员都该阅读的书
程序员都该阅读的书
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
老程序员的下场
老程序员的下场
总结2014中国互联网十大段子
总结2014中国互联网十大段子
程序员和编码员之间的区别
程序员和编码员之间的区别
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
 程序员的样子
程序员的样子
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
为什么程序员都是夜猫子
为什么程序员都是夜猫子
鲜为人知的编程真相
鲜为人知的编程真相
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
我的丈夫是个程序员
我的丈夫是个程序员
10个调试和排错的小建议
10个调试和排错的小建议
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
那些争议最大的编程观点
那些争议最大的编程观点
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
中美印日四国程序员比较
中美印日四国程序员比较
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有