Ansi C - K&R的编程语言书 - 包含头文件

hew*_*ewi 6 c kernighan-and-ritchie

通过K&R ansi C编程语言书(第二版),第82页,给出了编程文件/文件夹布局的示例.

版权所有K&R  -  C编程语言 -  Ansi C第二版

我不明白的是,虽然calc.h被列入main(使用功能),getop.c(getop的定义)和stack.c(push和pop的定义),它不会纳入getch.c,即使getchungetch被定义在那里.

sky*_*ing 9

虽然包含头文件是一个好主意,但它并不是必需的,因为getch.c它实际上并没有使用声明的函数calc.h,如果只使用那些已定义的函数,它甚至可以通过getch.c.

无论如何包含头文件是一个好主意的原因是因为如果你使用现代风格的原型和定义它会提供一些安全性.编译器应该抱怨,例如,如果getopgetop.c使用与中的相同签名定义calc.h.

  • @Lundin 这只是一个意见。事实是该头文件中的函数名称具有外部*链接*。也就是说,它们无论如何都是全局的。因此,在编译时也让它们全部为人所知也没有坏处!并且实际上可能是有益的:在编译时可以发现重复的不兼容声明。如果`graphics.c`定义了`draw`,`lottery.c`也定义了`lottery.c`,如果没有包含`lottery.h`和`graphics的翻译单元,它可能会在链接时间之前未被检测到(甚至可能不会) .h`。如果在 `common.h` 中声明了两个 `draw` 函数,就会被捕获。 (2认同)