Jak*_*son 0 c++ include c-preprocessor
我对C++有点新意,所以请耐心等待.我正在试图弄清楚我#defines和#includes我的项目到底在哪里.我有这样的事情:
main.h
#include "other.h"
#define MAX_GROUPS 100
struct Cat
{
int something[MAX_GROUPS];
}
Run Code Online (Sandbox Code Playgroud)
在other.h我还需要使用MAX_GROUPS,那么我也定义MAX_GROUPS在other.h这样的:
other.h
#define MAX_GROUPS 100
struct Other
{
int taco[MAX_GROUPS];
}
Run Code Online (Sandbox Code Playgroud)
问题是我定义了一个不止一个地方.我想把它们放在一起.
或者,我会重新加入main.h吗?
other.h
#include "main.h"
struct Other
{
int taco[MAX_GROUPS];
}
Run Code Online (Sandbox Code Playgroud)
这里的问题我认为它就像一个循环的依赖性东西.main.h包括other.h哪些包括main.h哪些包括other.h哪些包括...
设置项目的定义和包含的最佳方法是什么,以便将事物排序到其他包含的文件?通常的做法是在包含之前简单地完成所有定义吗?
最小化循环依赖关系对于维护项目非常重要.有关扩展讨论,请参阅John Lakos撰写的"大规模C++软件设计".
要避免您遇到的特定问题,请在一个头文件中定义值,并在每个需要它的文件中包含该头文件.要避免多个定义出现问题,请使用include guard:
#ifndef HEADER_THING_H
#define HEADER_THING_H
/* Rest of the header file goes here. */
#endif
Run Code Online (Sandbox Code Playgroud)
这样,如果已经包含它,它是无害的.