1.C语言的语言接语言源码头文件详解
2.å¦ä¹ Cè¯è¨ å¿
çç书ç±
C语言的头文件详解
在C语言家族程序中,头文件扮演着重要角色。口实每个C++/C程序通常由头文件和定义文件两部分组成。现源头文件作为功能函数、接口数据接口的实现系统图源码声明载体,用于保存程序的语言接语言源码insight源码声明,而定义文件则用于保存实现代码。口实头文件之间的现源桥梁作用让不同代码文件能重用全局变量、函数,接口并避免定义冲突。实现
适合放在头文件里的语言接语言源码内容包括:外部存储类型的标识符、用户构造的口实数据类型(如枚举类型)、外部变量、现源aispring源码函数、接口常量和内联函数等通用或常用的实现量。头文件中的声明允许在其他源程序文件中引用。例如,fpgariscv源码`stdio.h` 头文件中的函数声明让链接器能找到函数实际代码所在的位置,通过 `#include` 语句导入函数实现。
头文件的典型使用形式包括声明外部变量供其他文件共享。定义函数的饕餮源码源代码文件可以声明一个文件作用域的外部链接变量,随后在相关联的头文件中进行引用式声明,确保所有使用这些函数的文件都能访问该变量。对于具有文件作用域、内部链接和`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è¯è¨ä¹¦ç±é¢åï¼æ°´å¹³ä¸ç¸ä¸ä¸çä½åæå¾å¤ï¼è¿å æ¬åªæ¯æ ¹æ®æèªèº«çé 读ä½éª