Lib này chắc được viết lâu lắm rồi, thời chưa có template, tác giả dùng 100% #define để mô phỏng template
Nói chung thì bạn include file header của nó (sglib.h) vào rồi dùng thôi.
Ví dụ của nó:
// This program sorts its parameters using
// array sort level 1 interface.
// For example:
// a.out 6 7 3 4 1 5
// writes
// 1 3 4 5 6 7
#include <stdio.h>
#include <stdlib.h>
#include "sglib.h"
#define MAX_ELEMS 1000
SGLIB_DEFINE_ARRAY_SORTING_FUNCTIONS(int, SGLIB_NUMERIC_COMPARATOR)
int main(int argc, char **argv) {
int i,size;
int a[MAX_ELEMS];
size = argc-1;
for (i=0; i<size; i++) {
sscanf(argv[i+1],"%d", &a[i]);
}
sglib_int_array_heap_sort(a, size);
for (i=0; i<size; i++) {
printf("%d ", a[i]);
}
printf("\n");
return(0);
}
SGLIB_DEFINE_ARRAY_SORTING_FUNCTIONS dùng để define hàm sglib_int_array_heap_sort (cái chữ “int” được đưa vào tên hàm đấy);
Nếu bạn viết:
SGLIB_DEFINE_ARRAY_SORTING_FUNCTIONS(float, SGLIB_NUMERIC_COMPARATOR)
Thì bạn có hàm sglib_float_array_heap_sort
SGLIB_NUMERIC_COMPARATOR là biểu thức có kết quả boolean, dùng để so sánh các cặp phần tử trong tập hợp các phần tử.
Nếu bạn muốn dùng biểu thức riêng thì phải tự #define rồi đưa macro vào thay thế cho SGLIB_NUMERIC_COMPARATOR.
Còn lại thì bạn phải đọc tài liệu của nó.