Level 621 bài
C nâng cao
Con trỏ hàm ở tầng thiết kế, lập trình tổng quát, thao tác bit và các từ khóa quyết định.
Chương 29. Function Pointer
Callback, bảng điều phối, máy trạng thái, mô phỏng đa hình, closure.
- 29.1Cú pháp con trỏ hàmKhai báo, typedef, và cách đọc những khai báo trông rối mắt.24 phút
- 29.2Hàm gọi lạiTách chính sách khỏi cơ chế, và quy tắc thiết kế API nhận callback.26 phút
- 29.3Bảng điều phốiThay chuỗi if và switch dài bằng một bảng tra, và đo xem có nhanh hơn không.26 phút
- 29.4Máy trạng thái bằng con trỏ hàmBa cách cài máy trạng thái, và khi nào con trỏ hàm thắng switch.26 phút
- 29.5Đa hình thủ công bằng vtableCách nhân Linux làm, và cũng chính là cách C++ cài đặt từ khóa virtual.30 phút
- 29.6Closure trong CC không có lambda. Năm cách mô phỏng, và cách nào đáng dùng.28 phút
Chương 30. Generic Programming
void*, generic swap, container tổng quát, qsort, bsearch, _Generic.
- 30.1Con trỏ void và cái giá của nóKiểu bị xóa đi, và bốn thứ bạn mất khi dùng con trỏ không kiểu.24 phút
- 30.2Vector tổng quát: hai cáchCon trỏ void với kích thước phần tử, so với macro sinh mã.28 phút
- 30.3Danh sách kiểu nhân LinuxNhúng node vào struct thay vì nhúng dữ liệu vào node, và macro container_of.28 phút
- 30.4qsort và bsearchHai hàm tổng quát của thư viện chuẩn, và bốn cách viết sai hàm so sánh.26 phút
- 30.5_Generic của C11Chọn hàm theo kiểu ngay lúc biên dịch, và giới hạn của nó.24 phút
Chương 31. Bit Manipulation
Toán tử bit, set, clear, toggle, bitmask, thao tác thanh ghi.
- 31.1Biểu diễn nhị phânBốn cách viết hằng số, và hàm in bit của bất kỳ đối tượng nào.22 phút
- 31.2Sáu toán tử bit và ba cạm bẫyAND, OR, XOR, NOT, dịch trái, dịch phải, và ba chỗ hành vi không xác định.26 phút
- 31.3Bật, tắt, đảo và kiểm tra bitBốn thao tác cơ bản, và bộ macro nên có trong mọi dự án.24 phút
- 31.4Bitmask và trường bitNhiều cờ trong một biến, và vì sao bit field không dùng cho giao thức nhị phân.26 phút
- 31.5Thủ thuật bit và hàm dựng sẵnMười thủ thuật kinh điển, và các hàm dựng sẵn dùng thẳng lệnh CPU.28 phút
- 31.6Bitset lớn và ứng dụngMảng bit tiết kiệm tám lần bộ nhớ, và sàng Eratosthenes làm ví dụ.26 phút
Chương 32. volatile, const, restrict
Ba từ khóa quyết định khi làm hệ thống và hệ nhúng.
- 32.1volatileBốn trường hợp bắt buộc, và vì sao nó không phải công cụ đồng bộ đa luồng.28 phút
- 32.2const là hợp đồngNó nói với trình biên dịch và với người đọc, chứ không bảo vệ bộ nhớ.24 phút
- 32.3restrictLời hứa không có con trỏ nào khác trỏ vào đây, và cái giá khi thất hứa.26 phút
- 32.4Project: thư viện tiện ích hệ thốngBốn module gói lại mọi thứ của Phần 12, kèm kiểm thử đầy đủ.30 phút