[C/C++] Tạo thư viện trong C – Create a library in 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 – Table of content
Tạo file thư viện – Create library file
Dùng thư viện tự tạo – Using self library
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à .h 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 factorial, hàm hoán vị swap, hàm sắp xếp nhanh quicksort.
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 ý, có 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à #include “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à ở C:Program FilesDev-CppMinGW32include. Khi này bạn dùng như mọi thư viện khác bằng cách #include <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; }
chào anh!
bài viết của anh rất hữu ích. anh có thể viết thêm về các tạo và câu lệnh biên dịch static library và shared library được không ạ?
mong anh sớm có bài về static library và shared library
em cảm ơn!
Cảm ơn bạn, mình sẽ cố gắng…
Anh ơi, em muốn code một thư viện tiếng anh thì làm thế nào ạ
thì bạn viết bằng tiếng anh.
bạn ơi.khi mình tạo xong thư viện nhưng giờ muốn xóa nó đi thì làm sao ạ
thì bạn không dùng nữa là xong.