我应该把结构放在哪里才能在整个工作区上访问它?
Where should i place the struct for it to be accessible on the entire workspace?
创建 header 文件时,有时我需要访问我在其他 header 文件中声明的其他结构。目前我通过将 #include Directive
作为一棵树来组织它,这样如果我需要从 a
调用 b
中的 struct
我放置 a
header 在 main
中的 b
下方。
可能是一种不好的做法 I am NEW to C.. don't be harsh :P
我应该在哪里声明结构以使其在整个代码中都可以访问?
我是否应该创建一个包含所有结构的 header 文件,然后通过 #include Directive
调用它
在所有 header 文件上?为初学者声明结构的最佳做法是什么。
我目前可以访问在其他 header 文件中声明的其他结构
//main file
#include "b.h"
#include "a.h" <--- I had to put a.h underneath b.h to access to the struct in b.h named test
#include "c.h"
如果 struct A
的 header 文件需要了解 struct B
,那么定义 struct A
的 header 文件本身应该包含一个 #include
指令包含 struct B
的 header 文件,如果它是在不同的文件中定义的话。
没有必要 fiddle 与主源文件中 #include
指令的顺序来回走动。
只要所有 header 文件都有适当的 header 防护措施来防止同一 header 文件被包含两次,那么这应该不是问题。
文件 mystruct.h
的 header 守卫可能如下所示:
#ifndef MYSTRUCT_H_INCLUDED
#define MYSTRUCT_H_INCLUDED
//the main content of the header file goes here
#endif
这将在第一次包含 header 文件时设置预处理器宏,当第二次包含该文件时,预处理器将看到该宏已经设置,并将忽略文件的其余部分。
在许多编译器上,只需编写
就足够了
#pragma once
作为 header 守卫进入 header 文件,而不是使用上面提到的三行。但是,这可能不适用于所有编译器。有关详细信息,请参阅以下 C++ 问题(也应适用于 C):
创建 header 文件时,有时我需要访问我在其他 header 文件中声明的其他结构。目前我通过将 #include Directive
作为一棵树来组织它,这样如果我需要从 a
调用 b
中的 struct
我放置 a
header 在 main
中的 b
下方。
可能是一种不好的做法 I am NEW to C.. don't be harsh :P
我应该在哪里声明结构以使其在整个代码中都可以访问?
我是否应该创建一个包含所有结构的 header 文件,然后通过 #include Directive
调用它
在所有 header 文件上?为初学者声明结构的最佳做法是什么。
我目前可以访问在其他 header 文件中声明的其他结构
//main file
#include "b.h"
#include "a.h" <--- I had to put a.h underneath b.h to access to the struct in b.h named test
#include "c.h"
如果 struct A
的 header 文件需要了解 struct B
,那么定义 struct A
的 header 文件本身应该包含一个 #include
指令包含 struct B
的 header 文件,如果它是在不同的文件中定义的话。
没有必要 fiddle 与主源文件中 #include
指令的顺序来回走动。
只要所有 header 文件都有适当的 header 防护措施来防止同一 header 文件被包含两次,那么这应该不是问题。
文件 mystruct.h
的 header 守卫可能如下所示:
#ifndef MYSTRUCT_H_INCLUDED
#define MYSTRUCT_H_INCLUDED
//the main content of the header file goes here
#endif
这将在第一次包含 header 文件时设置预处理器宏,当第二次包含该文件时,预处理器将看到该宏已经设置,并将忽略文件的其余部分。
在许多编译器上,只需编写
就足够了#pragma once
作为 header 守卫进入 header 文件,而不是使用上面提到的三行。但是,这可能不适用于所有编译器。有关详细信息,请参阅以下 C++ 问题(也应适用于 C):