|
오 이런 뒷북이! 아시다시피 전통적인 C의 기능에서 여러 편리한 기능들이 추가가 되어 C99라는 이름으로 ANSI 표준으로 정해진 것이 있다. VC++ 컴파일러는 C99을 제대로 지원하지 않고 있는데 gcc는 이걸 지원을 해주고 있다. 그래서 지금까지 모르고 쓰던 기능이 제법있었다. 그 중에서도,
Variable-length arrays가 눈에 띈다. 흔히 C/C++ 책에 나오는 배열은 int A[10]; 과 같이 배열의 크기가 항상 상수이어야 한다고 배웠다.. 컴파일 할 때, 그 값이 명시적으로 정해있어야만 한다. 그래야 그에 맞게 스택을 할당할 수 있기 때문이다. 그런데 C99에 도입된 새 기능 중 하나는 이 배열의 크기가 상수일 필요가 없다는 것이다. 예를 들어, void foo(int size, int A[]){이런 코드가 가능하다! 정말로 편리한 기능이 아닐 수 없다. 아마 구현은 크기값에 따라 스택을 동적으로 늘리는 것으로 구현하는 것 같다. 어차피 _alloca라는 힙이 아닌 스택에 할당하는 함수가 있기에 (이제는 더 안전한 버전인 _malloca을 쓰라고 권장됨) 충분히 만들 수 있는 기능일 것이다. 그 밖에도 전통적인 C를 쓰면서 불편했던 변수 선언 위치도 아무 곳에서 할 수 있고, 매크로도 가변 인자가 지원이 된다. 이것이 안되어서 지저분하게 #define FOO1(arg), #define FOO2(arg1, arg2) 이런식으로 쓰곤 했었는데 이런 삽질을 줄일 수 있다. 정말 뒷북이었다면 죄송.
최근 등록된 덧글
개발자 입장에서의 수많은 ..
by Jiyoon at 02/04 저도 아들 돌잔치때 돌잡이 .. by 박상욱 at 01/18 미국 대학원 원서 작성중에 p.. by 태클사이야 at 01/13 TO: 박PD 로그인 하지 않아.. by 박응용 at 01/10 http://gigglehd.com/zbx.. by dhunter at 12/28 우와.. 좋네요. 태반이 .. by 윤광배 at 12/17 항상 좋은 글 잘 보고 있습니.. by y2k at 11/23 글이 좋아서 제 블로그에 담.. by 쏭섭 at 11/23 최근 등록된 트랙백
메뉴릿
이글루 파인더
|