[C] 예전 스타일 함수 선언. K&R-Style Declarations

2019. 7. 23. 13:56프로그래밍/C/C++

728x90
728x90

들어가며

  • 동료가 회사 c 코드에서 특이한 걸 발견해서 좀 찾아봤다.
  • 함수인데 인자는 괄호 안에 있지만 인자의 타입은 마치 클래스의 initializer-list와 비슷하게 선언된 형태.
int foo(a, b, c)
  int a;
  int b;
  int c;
{
  // some code
  return 0;
}
  • 신기하다. 어떻게 함수가 이렇게 생겼을 수가...

K&R Style Declarations

  • identifier-list form 이라 부르기도 하는듯 하다. 현대 C/C++에서 사용하는 방식은 parameter type-list form.
  • C언어가 최초로 나왔을 때, 함수 프로토타입에 대한 스펙이 모호했다고 한다.
  • 전방 선언도 있었지만 이도 리턴 타입에 대한 정의일 뿐 었다고 한다.
  • 그래서 함수 선언 시 인자에 대한 타입 지정이 명확하지 않기에 위와 같은 방식으로 선언하고 사용했다고 한다.

결론

  • 현대 스타일로 고치면 될듯 하다.
  • 자잘한 문제가 생길 수 있다고 하니 궁금하면 REF 참고.
int foo(int a, int b, int c)
{
  // some code
  return 0;
}

REF

728x90
반응형

'프로그래밍 > C/C++' 카테고리의 다른 글

[C/C++] shift operator 사용 시 주의  (0) 2019.07.19
[VS] tab, space 보기  (0) 2019.02.27
[Boost] 설치  (0) 2016.03.19
[C++] for each 써보기  (2) 2016.01.19
[C++, Json] jsoncpp 사용하기  (5) 2016.01.06
[C/C++] 삼항 연산자  (4) 2015.11.27
[C++11] 주요 기능들  (0) 2015.09.07