1.C语言的语言接语言源码头文件详解
2.å¦ä¹ Cè¯è¨ å¿
çç书ç±
C语言的头文件详解
在C语言家族程序中,头文件扮演着重要角色。口实每个C++/C程序通常由头文件和定义文件两部分组成。现源头文件作为功能函数、接口数据接口的实现wpay有开源码声明载体,用于保存程序的语言接语言源码sup+bbs+源码声明,而定义文件则用于保存实现代码。口实头文件之间的现源桥梁作用让不同代码文件能重用全局变量、函数,接口并避免定义冲突。实现
适合放在头文件里的语言接语言源码内容包括:外部存储类型的标识符、用户构造的口实数据类型(如枚举类型)、外部变量、现源vpay钱包系统源码函数、接口常量和内联函数等通用或常用的实现量。头文件中的声明允许在其他源程序文件中引用。例如,8266pwm源码`stdio.h` 头文件中的函数声明让链接器能找到函数实际代码所在的位置,通过 `#include` 语句导入函数实现。
头文件的典型使用形式包括声明外部变量供其他文件共享。定义函数的8n源码源代码文件可以声明一个文件作用域的外部链接变量,随后在相关联的头文件中进行引用式声明,确保所有使用这些函数的文件都能访问该变量。对于具有文件作用域、内部链接和`const`限定符的变量或数组,可以在头文件中进行引用式声明,每个包含该头文件的文件都会获得一份副本,避免在同一个文件中重复定义。
总结来说,头文件在C语言中至关重要,它允许代码重用、避免定义冲突,并作为链接器找到函数实现的途径。合理使用头文件能提高代码的可维护性和复用性。
å¦ä¹ Cè¯è¨ å¿ çç书ç±
Brian W.Kernighanï¼ Dennis M.Ritchieï¼ãCç¨åºè®¾è®¡è¯è¨ã
æ¸ åå½±å°çãä¹ é¢éï¼æºæ¢°è¯æçï¼æ°çãèçï¼ï¼ä¹ é¢é
è¿æ¯è¿ä»ä¸ºæ¢å¨ææç¨åºè®¾è®¡è¯è¨ä¹¦ç±ä¸æ广åå°æ¬çä¸é¨ç»å ¸ï¼æ¯ä»»ä½ä¸åCç¨åºåçå¿ è¯»ä¹ä½ãå 为åºèªCè¯è¨ç设计è Dennis M.Ritchieåèåç计ç®æºç§å¦å®¶Brian W.Kernighanä¹æï¼å®è¢«æµç§°ä¸ºâK&R Câãæ¯å®é¦å å¼å ¥äºâHello Worldï¼âç¨åºï¼è¿ä¸ªç¨åºå ä¹æäºåæ¥ä»»ä½ä¸æ¬å ¥é¨æ§ç¨åºè®¾è®¡è¯è¨ä¹¦ç±ä¸ç第ä¸ä¸ªä¾åã
å¦åCè¯è¨æ¬èº«ç®æ´ç´§åèæå ·å¨åä¸æ ·ï¼è¿æ¬ä¹¦è½»èçå°èæå¯å¼ åãéè¿ç®æ´çæè¿°åå ¸åç示ä¾ï¼å®å ¨é¢ãç³»ç»ãåç¡®å°è®²è¿°äºCè¯è¨çå个ç¹æ§ä»¥åCç¨åºè®¾è®¡çåº
æ³ï¼å 容涵çåºæ¬æ¦å¿µãç±»åå表达å¼ãæ§å¶æµãå½æ°ä¸ç¨åºç»æãæéä¸æ°ç»ãç»æãè¾å ¥ä¸è¾åºãUNIXç³»ç»æ¥å£ä»¥åæ ååºçå 容ã
ç®æ´æ¸ æ°æ¯è¿æ¬ä¹¦æ大çç¹è²ãè¿æ¬å°ä¹¦å¯ä»¥æç»ä½ 许å¤æ¯å®åå åçâ大é¨å¤´âçç¥è¯ãæ认为é£äºå¨è¾æ´æ´æ´æ´æ¼ååºå¥½å ç¾é¡µä¹è³ä¸å页çææ¯ä½è åºè¯¥å¥½å¥½åK&Rå¦ä¸å¦ã对äºä¸ãé«çº§ç¨åºåèè¨ï¼å¦æå¸æè¿ éè·å¾Cè¯è¨ç严èç¥è¯èåä¸æ¿æå¤è±è´¹åªæä¸ä¸ç¹æ¶é´ï¼è¿æ¬ä¹¦å°±æ¯é¦éã
顺便说ä¸å¥ï¼è¿æ¬ä¹¦çç´¢å¼å¶ä½é常åºè²ï¼æå ·å®ç¨ä»·å¼ï¼è¿å¯è½é¦å è¦å½åäºæ£æé¨åçç®ææ¼è¦ãæ¤å¤ï¼å°½ç®¡å®çä¸å»å¾åä¸æ¬æç¨ï¼ä½å ¶å®æ´æ¯ä¸æ¬åç»ä¸ä¸ç¨åºåçæåãå¦æä½ ä¸å ·å¤ä»»ä½å ¶ä»è¯è¨ç¨åºè®¾è®¡èæ¯æåºæ¬çCè¯è¨ç¥è¯ï¼è¿æ¬ä¹¦ä¹è®¸å¹¶ä¸éåç¨ä½ä½ çCè¯è¨å¯è读ç©ã
2. Perter Van Der LinDenï¼ãCä¸å®¶ç¼ç¨ã
Cä¸å®¶ç¼ç¨
Cè¯è¨æ¯ä¸¥èçç¨åºåè¯è¨ï¼ä½è¿å¹¶ä¸æå³çCè¯è¨ä¹¦ç±å¿ é¡»æ¿çé¢å说æãå¨è¿æ¬è¢«Cç¨åºåæµç§°ä¸ºâ鱼书âï¼å°é¢ä¸æä¸æ¡âä¸éçâè æ£é±¼ï¼çèä½ä¸ï¼ä½ä¸ºSUNå ¬å¸ç¼è¯å¨åæä½ç³»ç»æ ¸å¿å¼åç»æåä¹ä¸ï¼Peteræ·æ¼å°½è´å°å±ç¤ºäºå ¶æ·±åçææ¯æ²æ·ã丰å¯ç项ç®ç»éªãé«è¶ çåä½æ巧以åæçå¼çå¹½é»ãå¨è¿é¨ä½åä¸ï¼ä½è 以æµç çæåãè¯è°çç¬æ³å°é¸é»å ¸æ ãæºæ §åå¹½é»èªç¶å°èå ¥ææ¯æè¿°ä¸ï¼è¯»æ¥å®è¥ä¸æ¬å°è¯´ï¼æå¯è¶£å³ã æ¬ä¹¦è®²è¿°äºCè¯è¨çåå²ãè¯è¨ç¹æ§ã声æãæ°ç»ãæéãè¿æ¥ãè¿è¡æ¶ä»¥åå å使ç¨çç¥è¯ï¼æ示äºCè¯è¨ä¸è®¸å¤éæ¦ä¹å¤ï¼å°¤å ¶æ·±å ¥è§£æäºå£°æãæ°ç»åæéãå å使ç¨çæ¹é¢çç»èãè¦æ³æ为ä¸åä¸å®¶çº§Cç¨åºåï¼è¿äºå 容é½æ¯å¿ é¡»ææ¡çãåå ¶ä»æ»¡æ¯æ½è±¡ä¾åçCè¯è¨ä¹¦ç±ä¸åï¼è¿æ¬ä¹¦å 满äºå¤§éçæ¥èªçå®ä¸ççCç¨åºè®¾è®¡å®ä¾ï¼å®ä»¬å¯¹Cç¨åºåå ·æå¾é«çåç §ä»·å¼ãå¦å¤ï¼æ¯ä¸ç« é½ä»¥æå¯è¶£å³çâè½»æ¾ä¸ä¸âæ¶å°¾ï¼èéå½Aâç¨åºåå·¥ä½é¢è¯çç§å¯âåæ¯ä»»ä½è¯è¨çç¨åºåå¨åºèå·¥ä½åå¢å¼ºèªä¿¡ç好ææã
ææççæ£çCä¸å®¶å¯è½ç¨ä¸ççè¿æ¬ä¹¦ ââä»å 容å°ç»ç»æ¹å¼å°è¡æé£æ ¼é½å³å®äºè¿æ¯ä¸æ¬è½»æ¾æå¿«çâä»èé¸å°é«æâçè¿é¶è¯»æ¬ï¼æ以ï¼å®çåºæ¥ææ´å¹¿æ³ç读è 群ãå级ç¨åºåå¾å¾æ´éè¦çæ çé¼å±ï¼å¨é 读è¿æ¬ä¹¦çè¿ç¨ä¸ï¼ä½ å®ä¼æ·±æ·±å°è¢«ä½è 对ç¼ç¨çæ¿æ æææã
ä¸é´å¹¶æ å®ç¾ãæ认为è¿æ¬ä¹¦ç缺é·å¨äºï¼å大å¤æ°å¹³åº¸çCè¯è¨ä¹¦ç±ä¸æ ·ï¼å®ç»è添足å°å å ¥äºä¸ç« å ³äºC++çæè¿°ãå¨ä»å¤©çæ¥ï¼è¿ä¸ªæè¿°æ¢ä¸å ¨é¢ä¹æå¤±å ¬å ãä¸è¿ï¼é´äºä½è æ¯å¨å¹´ä»ä¸åCç¨åºåçè§åº¦å»è§å¯C++ï¼è¿ä¸ç¹ä¹å°±ä¸è¶³ä¸ºå¥äºã 3. Samuel P. Harbisonï¼ Guy L. Steeleï¼ãCè¯è¨åèæåï¼ç¬¬äºçï¼ã
å½±å°çï¼æºæ¢°å·¥ä¸åºç社ï¼ãä¸æçï¼æºæ¢°å·¥ä¸åºç社ï¼
å¨Cè¯è¨åèæå类书ç±éï¼Samuel P. Harbison åGuy L. SteeleåèçCï¼ A Reference Manualæ¯é常åºè²çä¸æ¬ãè¿æ¬æåç第äºçæ°å¢äºå¯¹Cæ åçä»ç»ï¼ä»¥ä¾¿æ»¡è¶³æ°æ¶æCè¯è¨å¦ä¹ çéè¦ãå ¨ä¹¦å ±å为两大é¨åï¼ç¬¬ä¸é¨åä¸æ³¨äºCè¯è¨ç¹æ§ï¼ç¬¬äºé¨ååå ¨é¢è®¨è®ºäºCæ ååºãæ¬ä¹¦æ¶µçCãCãä¼ ç»çCãææçæ¬çCè¿è¡åºä»¥åç¼åä¸C++å ¼å®¹çC代ç çä¸åç¥è¯ã
è¿æ¬æååªæ¯ä¸çå度ï¼ä½å®æ¯âæ¯å®æ´åâçå ¶ä»åèæåæ´æ¸ æ°å°æè¿°äºCè¯è¨çç°å¨åè¿å»çæ¹æ¹é¢é¢ãæ´æ¬æåææ¯ç»èæ述精确ï¼ç»ç»æ¡çæ¸ æ¥ï¼å 容å®å¤è¯¦å°½èåç®ææ¼è¦ãå¯ä»¥è¿ä¹è¯´ï¼å®å¨å¹¿åº¦ã深度å精度æ¹é¢é½æ¯åºç±»æèçã对äºä¸ãé«çº§Cç¨åºåèè¨ï¼è¿æ¬æåå¼å¾å¸¸å¤æ¡å¤´ï¼å®å ä¹è¯å®è¦æ¯K&Rçèä½ä½¿ç¨é¢çæ´é«ã
4. David Hansonï¼ãCè¯è¨æ¥å£ä¸å®ç°ï¼å建å¯éç¨è½¯ä»¶çææ¯ãï¼æºæ¢°å·¥ä¸åºç社
Cè¯è¨æ¥å£ä¸å®ç°ï¼å建å¯éç¨è½¯ä»¶çææ¯
Cè¯è¨è½å¤åç»ä¸åå¤å¹´èä¸è¡°ï¼ä¸ä¸ªéè¦çåå å¨äºå®çéåºè½åãå¨è¿âå¤ç¨âãâé¢å对象âãâç»ä»¶âãâå¼å¸¸å¤çâçå è¿æºå¶æ¼«å¤©é£èç年代ï¼Cè¯è¨ä»ç¶è½å¤ååå®å°èä¼é çè¯è¨ç¹æ§ï¼å¨ç¸å½ç¨åº¦ä¸æ»¡è¶³ç°ä»£è½¯ä»¶ä½ç³»æ¶ææåºçè¦æ±ãåªä¸è¿ï¼æ³è¦è¾¾å°è¿ä¸ªç¨åº¦ï¼å¿ é¡»è¦å¨Cçåºç¨ååä¸è¾¾å°æé«å±æ¬¡ãå¨åµå ¥å¼ãç³»ç»è½¯ä»¶ä»¥å对æ§è½è¦æ±æé«çç³»ç»å¼åä¸ï¼å¼å人åå¿ é¡»è¾¾å°è¿æ ·çå±æ¬¡ï¼çç»ææ¡Cè¯è¨çé«çº§ç¹æ§ï¼æè½å¤åæ¶æ»¡è¶³æçåçµæ´»æ§ãå¤ç¨æ§çè¦æ±ãå¯æï¼è½ç¶Cè¯è¨ææ¯å¾ä¹¦æ±çå æ ï¼ä½æ¯å ³æ³¨è¿ä¸ªå³°é¡¶ä¹åçä½åå´æ¯å±æå¯æ°ãDavid HansonçC Interfaces and Implementationså°±æ¯ä¸ªä¸ç¿æ¥ã
David Hansonæ¯ä¸å 大åé¼é¼çèªç±ç¼è¯å¨lccçåä½è ãå¨è¿ä¸ªé¡¹ç®ä¸ï¼ä»è´è´£æä¾é«åº¦å¯å¤ç¨çåºç¡æ¶æãå¨ä¸æçå®è·µä¸ï¼ä»å®å ¨ä½¿ç¨ANSI Cå½¢æäºä¸æ´å¥å¯å¤ç¨ç»ä»¶åºãè¿å¥ç»ä»¶åºæ¶ææ¸ æ°ï¼æ§è½ä¼å¼ï¼èä¸æä¾äºå¾å¤é«çº§çç¹æ§ï¼æ¯å¦ç±»Win SEHçå¼å¸¸å¤çæºå¶ãå¯ç§»æ¤ç线ç¨åºãé«æ§è½çå åæ± ã丰å¯çå¯å¤ç¨æ°æ®ç»æç»ä»¶ãDavid Hansonæä»å¨åä½è¿äºç»ä»¶çè¿ç¨ä¸æ积累çå¿å¾ä»¥åå¯¹å ¶æºç çç²¾è´åæååæ¬æ¬å°åå¨äºè¿æ¬ä¹¦éãè¿æ ·çèä½ï¼å½ç¶å ªç§°Cè¯è¨é¢åéçéå¿ç»åãé¾æªå·²æ èåææ¯ä½å®¶Richard Stevens对æ¤ä¹¦èµä¸ç»å£ï¼ä»è¯´ï¼âè¿æ¬ä¹¦ä¸çææ¯ï¼å¯¹äºå¤§é¨åCç¨åºåæ¥è¯´ï¼å·²ç»éå¿å¾å¤ªä¹ äºãâ对äºå¸æè½å¨Cè¯è¨åºç¨ä¸è¾¾å°æé«å±æ¬¡çæ ¸å¿ç¨åºåèè¨ï¼è¿æ¬ä¹¦æ¯é¾å¾çå¿ è¯»ä¹ä½ã
å ¶ä»é¤äºä»¥ä¸åæ¬ä¹¦ä»¥å¤ï¼æè¿ä¹ææ¨èAndrew Koenigçèä½ãCé·é±å缺é·ãï¼äººæ°é®çµåºç社ï¼åDeitelç¶ååèçC How to Program两æ¬ä¹¦ã
Cä¸å®¶ç¼ç¨
Andrew Koenigæ¯ä¸çä¸å±æå¯æ°çC++ä¸å®¶ï¼ä»çè¿æ¬ä¹¦å¯è½æ¯æèçä¸æ¬Cè¯è¨ç»å ¸ãå®ç®ææ¼è¦å°è®²è¿°äºCç¨åºè®¾è®¡ä¸çé·é±å缺é·ï¼å æ¬è¯æ³é·é±ãè¯æ³é·é±ãè¯ä¹é·é±ãè¿æ¥ãåºå½æ°ãé¢å¤çå¨ä»¥åå¯ç§»æ¤æ§ç¼ºé·çï¼æåä¸ç« è¿ç»åºäºå ³äºå¦ä½åå°ç¨åºé误ç建议以ååé¢åç« é®é¢çåèçæ¡ã尽管è¿ä¸ªå°ååæ书äºCæ åå¶å®ä¹åï¼ç¶èï¼å³ä½¿å°äºCæ©å·²é¢å¸çä»å¤©ï¼ä¹¦ä¸æå°ç大å¤æ°é·é±å缺é·ä¸å¦åäºå¹´åé£æ ·ä½¿æ们è¦éã
Cç¨åºè®¾è®¡æç¨
Deitelç¶ååèçC How to Programä¸ç´æ¯é常好çCè¯è¨å ¥é¨æç¨ï¼ææ头çä¸è¯æ¬å为ãCç¨åºè®¾è®¡æç¨ãï¼æºæ¢°å·¥ä¸åºç社åºçï¼å书第äºçï¼ãé¤äºå¯¹ææ¯çæ£è§æè¿°ï¼è¾ 以许å¤ç®ææ¼è¦çä¾åï¼å¤ï¼æ¯ä¸ç« åé¢é½å¸¦æå°ç»ãæ¯è¯ã常è§çç¨åºè®¾è®¡é误ãè¯å¥½çç¨åºè®¾è®¡ä¹ æ¯ãæ§è½å¿ åãå¯ç§»æ¤æ§å¿ åã软件工ç¨è¯è¿°ãèªææµéªç»ä¹ åçæ¡çãæ´ä¹¦å å®¹æ¸ æ°ï¼ç»ç»è¯å¥½ï¼æäºé 读åç解ãå¼å¾ä¸æçæ¯ï¼æ许å¤å ¥é¨ä¹¦è¯»å®ä¸éå³å¯ææï¼èè¿ä¸æ¬æ¯ä¸ªä¾å¤ã
ç»è¯ä»¥ä¸è¿å æ¬ä¹¦å¾å¤§ç¨åº¦ä¸å±éäºæè¿°Cè¯è¨åæ ååºæ¬èº«ï¼å¦æå¸æå¦ä¹ æ´ä¸ä¸çãé¢åç¸å ³çCç¨åºè®¾è®¡ææ¯ï¼ä½ å¯ä»¥å¨éæ©é 读è¿å æ¬ä¹¦çåºç¡ä¸ç»§ç»æ¥é ä¸é¨ä¹¦ç±ãæ¤å¤ï¼å¨Cè¯è¨ä¹¦ç±é¢åï¼æ°´å¹³ä¸ç¸ä¸ä¸çä½åæå¾å¤ï¼è¿å æ¬åªæ¯æ ¹æ®æèªèº«çé 读ä½éª