Thư viện chuẩn C

Thư viện chuẩn C ngày nay là một tập hợp của các tập tin tiêu đề và thư viện các thủ tục được tiêu chuẩn hóa dùng để thiết lập các pháp toán tổng quát, như là việc xử lý I/O và dãy ký tự trong C. Khác với Pascal hay PL/I, C không bao hàm sẵn các từ khoá để dùng cho tác thao tác, và như vậy, hầu như mọi chương trình C đều phụ thuộc vào thư viện chuẩn để hoạt động.
Thiết kế.
Tên và đặc tính của mỗi hàm trong C được chứa trong một tập tin gọi là tập tin tiêu dề nhưng sự kiến tạo thực sự của các hàm này được phân chia vào trong các tập tin thư viện. Tên và nội hàm của các tiêu đề đã trở nên thông dụng nhưng tổ chức của các thư viện này vẫn còn phân hoá. Thư viện chuẩn thường được ban hành chung với một trình dịch. Vì các trình dịch C thường hay cung cấp thêm các chức năng không có trong tiêu chuẩn ANSI C, nên một thư viện chuẩn của một trình dịch đặc thù hầu như sẽ không tương thích với các thư viện chuẩn của trình dịch khác.
Nhiều phần thư viện chuẩn C cho thấy việc thiết kế chúng rất tốt. Tuy nhiên, một số ít, cho thấy điểm yếu sau khi được dùng rộng rãi như là hàm đọc từ đầu vào codice_1 (và cũng như hàm codice_2 đọc dãy ký tự từ đầu vào) là một nguyên nhân của nhiều lỗi tràn bộ nhớ đệm, và hầu hết các sách hướng dẫn đều khuyến cáo tránh dùng chúng. Một khuyết điểm nữa là hàm codice_3 được thiết kế như là một phân tích từ điển cơ bản nhưng rất khó dùng và dễ bị hỏng.
Lịch sử.
Trước khi được tiêu chuẩn hoá, C đã không cung cấp các hàm nội tại chẳng hạn là các phép toán I/O (không giống với các ngôn ngữ truyền thống như Pascal và Fortran). Theo thời gian, người trong cộng đồng của C đã chia sẻ nhau các ý tưởng và xây dựng nên cái mà ngày nay ta gọi là thư viện chuẩn C để cung ứng các chức năng. Nhiều ý kiến trong đó, đã được dùng vào việc định nghĩa của ngôn ngữ lập trình tiêu chuẩn hóa C.
Unix và C đều đã được tạo ra ở Bell Labs vào cuối thập niên 1960 đầu thập niên 1970. Trong suốt những năm của thập niên 1970, C trở nên phổ biến. Nhiều đại học và tổ chức bắt đầu tạo ra các ngôn ngữ C riêng cho các đề án của họ. Đến đầu thập niên 1980, vấn đề tương thích giữa những sự kiến tạo về C đã trở nên nghiêm túc. Năm 1983, ANSI thành lập một hội đồng để hoàn tất đặc tả tiêu chuẩn cho C gọi là "ANSI C". Công việc này dẫn tới sự hình thành của cái gọi là chuẩn "C89" trong năm 1989. Một bộ phận của kết quả chuẩn này là một tập hợp của các thư viện phần mềm gọi là thư viện chuẩn ANSI C đã ra đời.
Phiên bản viết lại sau này của chuẩn C đã thêm vào nhiều tập tin tiêu đề cần thiết cho thư viện. Hỗ trợ cho nhiều sự mở rộng khác nhau giữa các sư thiết lập (của C).
Các tiêu đề &lt;iso646.h&gt;, &lt;wchar.h&gt;, và &lt;wctype.h&gt; đã được thêm vào với Tu chính chuẩn số 1 ("Normative Amendment") đưược viết tắt là NA1, và được chuẩn C chấp thuận vào năm 1995.
Các tiêu đề &lt;complex.h&gt;, &lt;fenv.h&gt;, &lt;inttypes.h&gt;, &lt;stdbool.h&gt;, &lt;stdint.h&gt;, và &lt;tgmath.h&gt; đã được thêm vào một phiên bản mới của chuẩn C là C99, phát hành năm 1999.
Chuẩn ANSI.
Thư viện chuẩn ANSI bao gồm 24 tiêu đề C mà có thể được bao gồm trong một đề án của người lập trình với các chỉ thị (dịch). Mỗi tiêu đề chứa một hay nhiều sự khai báo của hàm, sự định nghĩa của kiểu dữ liệu và các macro. Nội dung của các tiêu đề như sau:
Thư viện chuẩn thì không được viết hoa. Nó cung cấp tập hợp cơ bản các hàm toán, điều chỉnh dãy ký tự, chuyển đổi kiểu, và các I/O cơ sở. Nó không bao gồm một tập hợp chuẩn các "kiểu thùng chứa" như trong Thư viện chuẩn C++. Nó cũng không bao gồm các bộ công cụ GUI, các công cụ mạng, và những chức năng phong phú khác như Java đã cung cấp. Lợi thế chính của một thư viện chuẩn cỡ nhỏ là nó cung ứng một môi trường làm việc của ANSI C dễ dàng hơn so với các ngôn ngữ khác, và hệ quả là việc xuất chương trình C sang một nền tảng mới tương đối dễ dàng hơn.
Nhiều thư viện đã được phát triển để cung cấp chức năng tương đương với những thứ mà ngôn ngữ khác có trong thư viện chuẩn. Thí dụ môi trường của đề án GNOME phát triển bộ công cụ đồ họa GTK và glib, một thư viện của thùng chứa các cấu trúc dữ liệu, và có rất nhiều thí dụ nổi tiếng khác. Nhiều thư viện có ý nghĩa với các bộ công cụ tuyệt vời đã được chứng tỏ qua lịch sử. Một điểm đáng lưu tâm là các công cụ này thường không tương thích nhau, những người lập trình thường quen với sự khác nhau của các bộ thư viện này, và một bộ công cụ có thể khả dụng trong bất kì nền tảng nào.
Các tập tin tiêu đề của chuẩn ANSI C.
Contains defined constants specifying the implementation-specific properties of the integer types, such as the range of numbers which can be represented (_MIN, _MAX).
Thư viện chuẩn C trong C++.
Ngôn ngữ C++ bao gồm chức năng của thư viện chuẩn ANSI C nhưng được làm thêm nhiều thay đổi như là đổi tên của các tập tin tiêu đề từ &lt;xxx.h&gt; sang &lt;cxxx&gt; (mặc dù đã dược lưu ý cho sự thay đổi, các tên kiểu-C thì vẫn sử dụng được), và C++ xếp tất cả các định danh ("identifier") vào trong vào trong không gian tên codice_6.