为什么变量在括号外声明

时间:2016-08-21 13:13:18

标签: c

以下是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 ) ;
}

2 个答案:

答案 0 :(得分:3)

使用原始的Kernighan和Ritchie语法定义此函数。它被认为是老式的,不再使用太多了。更喜欢C89引入的更新样式(又名 ANSI样式)语法:

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

答案 1 :(得分:2)

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

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

相同
static long CheckBytes(long kind,long byt, long typ) {