合理使用前置声明:在头文件中尽量使用前置声明来代替直接包含其他头文件,以减少编译依赖和提高编译效率。 优化头文件结构:合理划分头文件的内容,将共享的数据结构或类型提取到独立的头文件中,以减少头文件之间的耦合度。 注意编译器的警告和错误提示:在编译过程中,要密切关注编译器的警告和错误提示,及时发现并解决潜在...
因此,在源文件中应仅包含必需的头文件,且尽量不要在头文件中包含其它头文件。 二、 头文件组织原则 源文件中实现变量、函数的定义,并指定链接范围。头文件中书写外部需要使用的全局变量、函数声明及数据类型和宏的定义。 建议组织头文件内容时遵循以下原则: 1)头文件划分原则:类型定义、宏定义尽量与函数声明相分离...
如果使用的仅仅是一个类的指针,没有使用这个类的具体对象(非指针),也没有访问到类的具体成员,那么前置声明就可以了。因为指针这一数据类型的大小是特定的,编译器可以获知。 第二个原则应该是,尽量在CPP文件中包含头文件,而非在头文件中。假设类A的一个成员是是一个指向类B的指针,在类A的头文件中使用了类B的...
2)头文件的语义层次化原则:头文件需要有语义层次。不同语义层次的类型定义不要放在一个头文件中,不同层次的函数声明不要放在一个头文件中。 3)头文件的语义相关性原则:同一头文件中出现的类型定义、函数声明应该是语义相关的、有内部逻辑关系的,避免将无关的定义和声明放在一个头文件中。 4)头文件名应尽量与实...
函数声明(或称原型)是告诉编译器函数的名称、返回类型和参数类型,但不需要给出具体实现。通常,函数声明放在文件的开头或头文件中,因此也被称为前置声明 int add(int a, int b); 像上面的代码,我们只告诉了编译器函数的形式,但是没有具体的实现,这个需要我们在后面补齐。
(1)前置声明是针对类型,变量或者函数而言的 (2)前置声明是个不完整的类型 (3)前置声明会加快程序的编译时间 其实上面的typedef struct __list *list_t;就是建立在前置声明基础上的。 前置声明有哪些作用 (1)前置声明可以有效的避免头文件循环包含的问题,看下面的例子 ...
如果和typedef一块使用,然后用重新定义的类型。就需要前置声明。typedef struct stu STU; struct stu{ ...
在头文件中减少包含其他头文件,改用前置声明(forward declarations),理由是:头文件被包含的同时会引入一项新的依赖(dependency),只要头文件被修改,代码就要重新编译,如果你的头文件包含了其它头文件,这些头文件的任何改动都将导致那些包含了你的头文件的代码重新编译。
1 int a; // 定义性声明,分配存储空间,初值不确定 2 int b = 0; // 定义性声明,分配存储空间,赋初值 3 extern int c; // 引用性声明,不分配存储空间,只是告诉编译器变量c在别处分配过了 C语言类型(C Types) C语言将类型分为三类(C99 6.2.5): ...
建议组织头文件内容时遵循以下原则: 1)头文件划分原则:类型定义、宏定义尽量与函数声明相分离,分别位于不同的头文件中。内部函数声明头文件与外部函数声明头文件相分离,内部类型定义头文件与外部类型定义头文件相分离。 注意,类型和宏定义有时无法分拆为不同文件,比如结构体内数组成员的元素个数用常量宏表示时。因此...