| 類別 | 副檔名 | 內容 | 階段 |
|---|---|---|---|
| 頭文件 | .h | 常量定義、類型定義、宏定義、**函數原型聲明**、編譯選項 | 編譯期 (預處理/編譯) |
| 函數庫 | .lib / .a / .so / .dll | 函數目標代碼 (機器指令) | 鏈接期 |
鐵律:調用庫函數前,**必須**包含該函數原型所在的頭文件 (#include <head.h>),否則編譯器產生隱式聲明 (假設返回 int),導致類型不匹配、棧平衡錯誤、未定義行為。
| 頭文件 | 核心功能域 | 典型函數/宏 |
|---|---|---|
ALLOC.H | 內存管理 (分配/釋放/大內存模型) | malloc, free, calloc, realloc, farcalloc, farmalloc, farfree |
ASSERT.H | 斷言調試宏 | assert(expr) |
BIOS.H | IBM PC ROM BIOS 中斷調用 | bioskey, biosdisk, biosprint, bioscom, biosequip, biosmemory |
CONIO.H | DOS 控制台 I/O (非標準) | getch, kbhit, clrscr, gotoxy, textcolor, textbackground, cprintf, cscanf |
CTYPE.H | 字符分類與轉換 | isalpha, isdigit, isspace, isalnum, toupper, tolower, toascii, _toupper |
DIR.H | 目錄與路徑操作 | mkdir, rmdir, chdir, getcwd, findfirst, findnext, fnsplit, fnmerge, MAXPATH, MAXDRIVE, MAXDIR, MAXFILE, MAXEXT |
DOS.H | DOS 系統調用、中斷、段寄存器、日期時間 | int86, int86x, intdos, intdosx, gettime, settime, getdate, setdate, REGS, SREGS, FP_SEG, FP_OFF |
ERRNO.H | 錯誤碼助記符 | EDOM, ERANGE, ENOMEM, EINVAL, EDQUOT, ENOSPC, errno (外部變量) |
FCNTL.H | 文件控制選項 (open 參數) | O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_TRUNC, O_APPEND, O_BINARY, O_TEXT |
FLOAT.H | 浮點類型特性常量 | FLT_MAX, FLT_MIN, FLT_EPSILON, FLT_DIG, DBL_MAX, DBL_DIG, LDBL_MANT_DIG |
GRAPHICS.H | BGI 圖形庫 | initgraph, closegraph, detectgraph, line, circle, arc, ellipse, floodfill, setcolor, setbkcolor, setlinestyle, setfillstyle, getpixel, putpixel, imagesize, getimage, putimage |
IO.H | 低級 I/O (文件描述符) | open, close, read, write, lseek, tell, eof, chmod, chsize, locking, creat, dup, dup2, pipe |
LIMITS.H | 整數類型極限常量 | CHAR_BIT, CHAR_MAX, CHAR_MIN, INT_MAX, INT_MIN, LONG_MAX, LONG_MIN, UINT_MAX, ULONG_MAX |
MATH.H | 數學函數 | sin, cos, tan, asin, acos, atan, atan2, sinh, cosh, tanh, exp, log, log10, pow, sqrt, ceil, floor, fabs, fmod, frexp, ldexp, modf, HUGE_VAL, matherr, struct exception |
MEM.H | 內存操作 (多與 STRING.H 重疊) | memcpy, memset, memcmp, memchr, memmove, memccpy, movmem, setmem, _fmemcpy, _fmemset |
PROCESS.H | 進程管理 | spawnl, spawnle, spawnlp, spawnlpe, spawnv, spawnve, spawnvp, spawnvpe, exec..., _exit, getpid, cwait |
SETJMP.H | 非局部跳轉 | setjmp, longjmp, jmp_buf |
SHARE.H | 文件共享模式 | SH_COMPAT, SH_DENYRW, SH_DENYWR, SH_DENYRD, SH_DENYNO |
SIGNAL.H | 信號處理 | signal, raise, SIG_DFL, SIG_IGN, SIGINT, SIGTERM, SIGFPE, SIGSEGV, SIGABRT |
STDARG.H | 可變參數表 | va_list, va_start, va_arg, va_end, va_copy (C99) |
STDDEF.H | 標準定義 | NULL, offsetof, size_t, ptrdiff_t, wchar_t, max_align_t (C11) |
STDIO.H | 標準 I/O 庫 (K&R Unix System V 兼容) | printf, scanf, fopen, fclose, fread, fwrite, fseek, ftell, rewind, fgetc, fputc, fgets, fputs, fprintf, fscanf, sprintf, sscanf, stdin, stdout, stderr, _iob, FILE, BUFSIZ, EOF, SEEK_SET, SEEK_CUR, SEEK_END |
STDLIB.H | 實用程序庫 | malloc, free, calloc, realloc, exit, abort, atexit, system, getenv, putenv, qsort, bsearch, abs, labs, llabs, div, ldiv, lldiv, strtol, strtoul, strtoll, strtoull, strtof, strtod, strtold, rand, srand, RAND_MAX, mblen, mbtowc, wctomb, mbstowcs, wcstombs |
STRING.H | 字符串與內存操作 | strcpy, strncpy, strcat, strncat, strcmp, strncmp, strcoll, strxfrm, strlen, strchr, strrchr, strspn, strcspn, strpbrk, strstr, strtok, strerror, memset, memcpy, memmove, memcmp, memchr, memccpy, _fstrcpy, _fmemcpy |
SYS\STAT.H | 文件狀態 (open/creat 模式) | stat, fstat, S_IFMT, S_IFREG, S_IFDIR, S_IFCHR, S_IFBLK, S_IFIFO, S_ISUID, S_ISGID, S_IRUSR, S_IWUSR, S_IXUSR, S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH, S_IXOTH |
SYS\TYPES.H | 基本系統數據類型 | time_t, clock_t, size_t, off_t, ino_t, dev_t, pid_t, uid_t, gid_t, mode_t, nlink_t, blksize_t, blkcnt_t, fpos_t |
SYS\TIME.H | 時間類型 | time_t, struct timeb (ftime), struct tm (localtime/gmtime) |
TIME.H | 時間與日期轉換 | asctime, ctime, gmtime, localtime, strftime, difftime, mktime, time, clock, struct tm, CLOCKS_PER_SEC |
VALUE.H | 機器相關極限常量 (硬件依賴 + Unix V 兼容) | MAXSHORT, MAXINT, MAXLONG, MAXFLOAT, MAXDOUBLE, HIBITS, FLOAT_MAX, LN_MAXDOUBLE, LOG10_MAXDOUBLE, SQRT_MAXDOUBLE |
< > 包含系統頭文件," " 包含項目頭文件。#ifndef GUARD_H / #define GUARD_H / #endif 或 #pragma once。stdio.h, stdlib.h, string.h...),減少平台鎖定。-Wall -Wextra -Wpedantic -Werror 強制暴露隱式聲明、類型不匹配。頭文件是 C 模塊化的契約介面。Turbo C 時代的 31 個頭文件承載了 DOS 系統編程的完整記憶;現代開發應聚焦 **ISO C 24 標準頭文件 + POSIX 擴展 + 項目自定義模塊頭文件**,遵循「精確包含、最小依賴、標準優先、警告全開」工程規範,構建可移植、可維護、高性能的 C 系統代碼。