C语言头文件中定义结构体的问题

2024-12-02 10:45:25
推荐回答(3个)
回答1:

C语言程序设计中,为防止头文件在同一编译单元被重复引用,常引入#ifndef宏来进行保护,如:头文件my_head.h

#ifndef _MY_HEAD_H_             //如果没有定义宏_MY_HEAD_H_
#define _MY_HEAD_H_             //则,定义该宏名
//以下是被保护的代码区
//进行相应的全局变量和结构体类型定义
typedef struct stu {
    int a;
    int b;
} STU ;
#endif                        //宏判断结束

这样,当整个代码中,多次引用这个my_head.h时,只有一次是生效的,系统编译时,如果检查宏_MY_HEAD_H_ 已经定义,就不会再进入被保护的代码区了。

PS: 宏名,一般是与头文件名相同,只是把字母全大写,前后加上下划线(_)

回答2:

  头文件由三部分内容组成:
(1)头文件开头处的版权和版本声明。
(2)预处理块。
(3)函数和类结构声明等。
  它的作用:
  (1)通过头文件来调用库功能。
  (2)头文件能加强类型安全检查。
  用 #include 格式来引用标准库的头文件(编译器将从标准库目录开始搜索),到include子目录下搜索给出的文件,并把它嵌入到当前文件中 。
用 #include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索),在当前目录中进行搜索,如果找不到,再按标准方式进行搜索 ,这种方式适用于用户自己建立的头文件。
  需要对外公开的常量放在头文件中,不需要对外公开的常量放在定义文件的头部。为便于管理,可以把不同模块的常量集中存放在一个公共的头文件中
  

回答3:

是ifndef把