我是C和C ++语言的新手,我对C中的头文件有疑问:
A.H
#define HELLO (1)
typedef struct
{
int a;
int b;
} hello;
b.h
#include "a.h"
#define NUMBER (3)
的main.c
#include "b.h"
在main.c
中的,struct
中定义的macro
和a.h
是否可用于main.c
?
答案 0 :(得分:1)
当然可以在main.c中使用Struct和MACROS
您需要了解C编译过程,在编译或链接main.c之前,有预处理器步骤:
<强>预处理强>:
所以main.c实际上看起来像这样:
#define HELLO (1)
typedef struct
{
int a;
int b;
} hello;
#define NUMBER (3)
然后替换所有宏,这里你不使用HELLO或NUMBER,所以纯c主文件将是:
typedef struct
{
int a;
int b;
} hello;
答案 1 :(得分:0)
是的,它可以使用。这是#include
头文件的唯一目的。
有关详细信息,您可以查看预处理的代码版本。使用
gcc -E <filename.c> //main.c, in this case
在那里,您可以看到包含的头文件中存在struct
和MACROS definde。
答案 2 :(得分:0)
是的,#include
指令本身出现在包含文件中会产生正常影响,最高可达实施定义的包含级别数限制。 &#34;正常效果&#34;相当于文本插值 - 也就是说,所包含文件的内容没有单独的作用域 - 因此任何直接或间接包含的文件中出现的声明对于所有代码都可见。
答案 3 :(得分:0)
是的,#include语句可以将多个文件链接在一起。 #include从字面上将一个文件的内容复制并粘贴到另一个文件中,因此您可以将其视为一个接一个的效果。