在C中分离接口和实现
在将接口与C中的实现分开时,哪里是包含头文件的正确位置?
在接口文件(.h文件)或实现文件(.c文件)中?为什么? 我的示例代码: console.h #ifndef CONSOLE_H #define CONSOLE_H #include <windows.h> void gotoxy (const WORD x,const WORD y); void clearScreen(); #endif console.c中 #include <stdlib.h> #include "console.h" COORD coord = {0,0}; void gotoxy (const WORD x,const WORD y){ coord.X = x; coord.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord); } void clearScreen(){ system("cls"); } 解决方法
以下是一些原则:
>不必要的包含标头只会增加编译时间. 想象一下,您的项目有一个通用标题,包括所有其他项目标题以及它们可能需要的所有系统标题.所以任何.c文件只需要包含这一个标题并完成它.这很方便.但是,除了延长每个.c文件的编译时,它还保证每次更改单个标头时都必须重新编译整个项目.这将显着减慢您的修改 – 编译 – 测试周期. 这个原则的问题是,如果.h文件没有定义实现所需的类型,那么你的.c文件可以在没有include的情况下正常编译.然而,包含必须在那里以防止签名不匹配. 因此,除了第3点之外,谨慎的做法是仅包含绝对需要的标头,并且仅包含实际需要它的文件.就个人而言,在我收到编译器错误告诉我缺少某些内容后,我经常只包含一个标题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |