2016-08-21 141 views
2

下面是一个C函数。我不明白函数名称后的变量声明。正如函数名称后面的文本,它应该以大括号开始。但是这里没有大括号,它声明了3个变量。任何人都可以告诉我:那些变量是局部函数,为什么它们不在大括号内。为什么变量在括号外声明

static long CheckBytes (kind, byt, typ) 
/*********************************************************************/ 
    long    kind    ; 
    long    byt    ; 
    long    typ    ; 
{ 
    long    byte    ; 

    byte = 0 ; 
    switch (typ) { 
    case 1 : 
     if (kind == 1) { 
     if (byt >= 1 && byt <= 16) byte = byt/4 ; 
     } 
     else { 
     if (byt >= 1 && byt <= 16) byte = byt/2 ; 
     } 
     break ; 
    case 2 : 
     if (kind == 2) { 
     if (byt >= 1 && byt <= 32) byte = byt ; 
     } 
     else { 
     if (byt >= 1 && byt <= 32) byte = byt ; 
     } 
     break ; 
    case 3 : 
     if (kind == 1) { 
     if (byt >= 1 && byt <= 16) byte = byt/4 ; 
     } 
     else { 
     if (byt >= 1 && byt <= 16) byte = byt/2 ; 
     } 
     break ; 
    } 

    return (byte) ; 
} 
+3

看一看[这](http://stackoverflow.com/questions/13789450/variable-declaration-between-function-名字和第一卷曲花括号)答案 – PSD

+1

这是非常古老的风格。它相当于'静态长CheckBytes(long kind,long byt,long typ){// ...}' – cwschmidt

回答

2

这是定义函数的旧方法。基本上

static long CheckBytes(kind,byt,typ) 
    long kind; 
    long byt; 
    long typ; 
{ 

相同

static long CheckBytes(long kind,long byt, long typ) { 
3

此功能使用原始Kernighan和Ritchie语法定义。它被认为是老式的,不再使用太多。喜欢新风格(又名ANSI风格)语法与C89介绍:

static long CheckBytes(
    long    kind, 
    long    byt, 
    long    typ) { ,,, 
相关问题