[C / C ] Tạo thư viện trong C – 创建C语言库

Khi làm việc với C, nếu có một số hàm nào đó bạn thường xuyên sử dụng và không muốn viết đi viết lại nhiều lần, hãy tạo ra một file thư viện chứa các hàm đó. Bài viết này sẽ giúp bạn làm điều đó!

Nội dung – 表中的内容
Tạo file thư viện – 创建库文件
Dùng thư viện tự tạo – 使用自库

Tạo file thư viện

Để tạo được file thư viện, các bạn làm không khác gì với việc bạn viết code bình thường. Bạn tạo file với đuôi là và viết các hàm bạn muốn vào. Ví dụ để tạo thư viện mylibrary.h chứa các hàm tính giai thừa 阶乘, hàm hoán vị 互换, hàm sắp xếp nhanh 快速排序.

long factorial(int n) {
     
    int i;
    long result = 1;
    for (i = 2; i <= n; i++){
        result *= i;
    }
     
    return result;
}
 
void swap(int *a, int *b){
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
}
 
void quickSort(int *a, int l, int r) {
    srand(time(NULL)); 
    int key = a[l + rand() % (r-l+1)]; 
    int i = l, j = r;
  
    while(i <= j) {
        while(a[i] < key) i++;      
        while(a[j] > key) j--;     
        if(i <= j) {
            if (i < j)
                swap(&a[i], &a[j]);
            i++;
            j--;
        }
    }
 
    if (l < j) quickSort(a, l, j); 
    if (i < r) quickSort(a, i, r);
}

Dùng thư viện tự tạo

Bây giờ chúng ta chỉ việc dùng thư viện đó. Việc dùng cũng cần lưu ý, 2 cách dùng.
Cách 1: Nếu bạn để thư viện vừa tạo cùng thư mục với các file code khác thì trong lời gọi thư viện sẽ là #包括 “mylibrary.h”. Trong trường hợp này mỗi khi bạn dùng thư viện bạn cần copy file này cùng các file code.

Cách 2: Nếu bạn không muốn rắc rối như cách 1, hãy copy file vừa tạo vào /usr / include目录 với Linux, trên windows thì copy vào thư mục chứa các thư viện, đối với dev-C là ở Ç:节目FilesDev-CppMinGW32include. Khi này bạn dùng như mọi thư viện khác bằng cách #包括 <mylibrary.h> .

Ở file minh họa dưới đây mình để cùng thư mục.

#include <stdio.h>
#include "mylibrary.h"
 
int main (int argc, char *argv[])
{
 
    printf("5! = %ldn",    factorial(5));
 
    int i, arr[] = { 40, 10, 100, 90, 20, 25 };
    quickSort(arr, 0, 5);
    printf("after sort, array is: n");
    for (i=0; i<6; i++)
        printf ("%d ", arr[i]);
    printf("n");
     
    return 0;
}

用C创建库