code

C의 이 이상한 함수 정의 구문은 무엇입니까?

starcafe 2023. 10. 5. 23:25
반응형

C의 이 이상한 함수 정의 구문은 무엇입니까?

최근에 GNU 바이슨을 사용하면서 몇 가지 함수 정의를 본 적이 있습니다.

static VALUE
ripper_pos(self)
    VALUE self;
{
    //code here
}

왜 유형은self괄호 밖에?이것이 유효한 C입니까?

이는 파라미터의 유형을 별도로 선언하는 오래된 K&R 스타일 함수 파라미터 선언입니다.

int func(a, b, c)
   int a;
   int b;
   int c;
{
  return a + b + c;
}

이는 함수 매개 변수를 선언하는 보다 현대적인 방법과 동일합니다.

int func(int a, int b, int c)
{
  return a + b + c;
}

"새로운 스타일"의 선언은 기본적으로 보편적으로 선호됩니다.

이것은 함수 선언 인수의 소위 "오래된" 변형입니다.옛날에는 괄호 안에만 인수 유형을 쓸 수는 없었지만, 괄호 안의 종결 괄호 바로 뒤에 각 인수별로 정의해야 했습니다.

즉, 다음과 같습니다.ripper_pos( VALUE self )

예, 함수 본문의 따옴표 앞에 매개 변수 sans type이 괄호 안에 나열된 이전 스타일의 함수 정의를 사용합니다. 따라서 함수 본문의 따옴표 앞에 해당 변수의 유형을 선언합니다.self유형의VALUE.

이것은 오래된 c입니다. K&RC는 ANSIC가 입력된 매개변수를 적용하기 전에 이 규칙을 사용했습니다.

static VALUE  // A static function that returns 'VALUE' type.
ripper_pos(self)  // Function 'ripper_pos' takes a parameter named 'self'.
    VALUE self;   // The 'self' parameter is of type 'VALUE'.

그것이 구 스타일의 C 함수 선언 구문입니다.

인수 이름을 먼저 지정하고 유형을 지정하는 오래된 C 코드입니다.여기 예를 들어 보세요.

언급URL : https://stackoverflow.com/questions/3016213/what-is-this-strange-function-definition-syntax-in-c

반응형