2016-08-21 52 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) { ,,, 
相關問題