C语言中的头文件中的宏定义

    科技2025-09-24  65

    常见内容

    源文件的头部一般都会有#include指令来包含头文件,头文件的内容一般就是

    #define语句extern声明函数原型声明 #include和#define都是C的预处理指令,#include就是把文件中的所有内容粘贴到源文件中,仅此而已!

    (一般)格式

    头文件的编写一般遵循如下格式

    #ifndef _MYLIB_H_ #define _MYLIB_H_ /*文件的内容放在这里,如*/ int a; typedef struct _node{ int value; struct _node *next; }Node; #define PI 3.14 #endif

    这样写的目的是为了防止重复导入,因为预处理器在处理ifndef指令的时候,如果_MYLIB_H_被定义过了,就会直接跳转到#endif处,中间的内容在真正编译的时候不会被包括进去。_MYLIB_H_可以改成任何名字,不过最好按照规范:所有字母大写,.改成_。 刚开始我一直以为_MYLIB_H_被定义为下面的所有语句,然后就很纳闷,这个define怎么和宏定义的define不太一样,其实在这里_MYLIB_H_就是被定义成了一个空的东西,有定义但是什么值都没有。然后如果又被引入一次,预处理器就会跳到#endif去,使得头文件的内容不被重复包含(虽然应该是被重复粘贴了)

    一些规范

    尽管条件包含可以避免包含多个同一文件,用户就不必考虑头文件之间的依赖关系,但是不同源文件的链接是在最后一步进行的,而预处理是在第一步进行的,所以如果头文件中有变量的定义而且被多个文件包含,在链接的时候就会报重复定义的错误,所以,一个好的规范就是:

    头文件中不要有函数或者变量的定义!

    Processed: 0.013, SQL: 8