C 可以将文件包含到头文件中吗

C 可以将文件包含到头文件中吗,c,C,将头文件包含到另一个头文件中是否是一种常见做法,如下所示: #ifndef _IO_H_ #define _IO_H_ #include <stdint.h> //Is this OK? typedef struct { uint8_t PIN0 :1; uint8_t PIN1 :1; uint8_t PIN2 :1; uint8_t PIN3 :1; uint8_t PIN4 :1; uint8_t PIN5 :1; uint8_t PI

将头文件包含到另一个头文件中是否是一种常见做法,如下所示:

#ifndef _IO_H_
#define _IO_H_
#include <stdint.h> //Is this OK?
typedef struct
{
   uint8_t PIN0 :1;
   uint8_t PIN1 :1;
   uint8_t PIN2 :1;
   uint8_t PIN3 :1;
   uint8_t PIN4 :1;
   uint8_t PIN5 :1;
   uint8_t PIN6 :1;
   uint8_t PIN7 :1;
}pin_map;
#endif /*_IO_H_*/
\ifndef\u IO\H_
#定义_
#包括//这样可以吗?
类型定义结构
{
uint8_t PIN0:1;
uint8_t PIN1:1;
uint8_t PIN2:1;
uint8_t PIN3:1;
uint8_t PIN4:1;
uint8_t PIN5:1;
uint8_t PIN6:1;
uint8_t PIN7:1;
}pinu图;
#endif/*\u IO\u H_*/
是的,这很常见

有人说这是一个坏主意,但我不同意,因为很明显,您正在编写的标题需要
,而要求标题的用户了解这一点是非常粗鲁的(对于较大的代码来说也是非常复杂的)


这就是说,当然你不应该包含你不需要的头,因为这会导致混乱和构建时间,这两个都是不好的,应该最小化。

可能的重复:顺便说一下“包含保护”
\ifndef\IO\u H
#define(定义)和
(结束)/*(定义)专门用于将头文件包含到其他头文件中。我猜您的
stdint.h
文件-如果没有(极不可能),则在头文件中包含
\code>是危险的。注意:
\u IO\u h
对应于保留的名称。因此这是非法的。此外,避免在以下情况下包含任何不必要的头文件:当
file.h
file.c
的公共头文件时,并且
file.c
使用,例如,一些数学,仅在源文件中而不在头文件中包含
math