const 에 대해서..

macros의 이미지

   1 #include <stdlib.h>
   2 #include <iostream>
   3
   4 // qsort()의 인자로 쓰일 비교함수
   5 inline int cmp(void *a, void *b)
   6 {
   7     int aa = *(int *)a;
   8     int bb = *(int *)b;
   9     return (aa < bb) ? -1 : (aa > bb) ? 1 : 0;
  10 }
  11
  12 int main()
  13 {
  14     const int size = 1e5;
  15     int array[size];        // 100,000개의 정수로 이루어진 배열
  16
  17     // 입력
  18     int n = 0;
  19     while (std::cin >> array[n])
  20     {
  21         n++;
  22         if(n==5) break;
  23     }
  24
  25     // 정렬
  26     qsort(array, n, sizeof(int), cmp);
  27
  28     // 출력
  29     for (int i = 0; i < n; i++)
  30         std::cout << array[i] << std::endl;
  31 }

아주 간단한 정수 입력을 받아 정렬하는 소스입니다.
여기서 5 line 에 "inline int cmp(void *a, void *b)" 이 부분을
"inline int cmp(const void *a, const void *b)" 로 해줘야
컴파일이 되는데요..
yarmini의 이미지

qsort의 원형이

void qsort( void *base, size_t num, size_t width, int (__cdecl *compare )(const void *elem1, const void *elem2 ) );

이것이기 때문에 cmp함수 인자에도 const를 붙여야 형이 같아지므로 에러(혹은 warning)를 발생 시킨 듯 합니다.

언 제 나 멋 진