我是一个相当新的程序员,我正在Visual / C++ / SDL中做一个小游戏项目。所以我的代码如下所示:
原型h:
#ifndef PROTOTYPES_H
#define PROTOTYPES_H
#include "constants.h"
#include "globals.h"
#include "functions.h"
struct circle
{
float x;
float y;
int r;
};
//other class declarations
#endif PROTOTYPES_H功能h:
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
#include "SDL_header.h"
#include "prototypes.h"
bool check_collision(circle circle, SDL_Rect rect);
//other function declarations
#endif FUNCTIONS_H据我所知,这是完全正确的,至少根据这的解释。即使我在IDE中的函数.h文件中的“循环”上按下鼠标,也会弹出正确的工具提示'struct循环‘。但是,当我编译时,我得到了引用函数的错误‘未声明的标识符’循环‘。
怎么回事..?
发布于 2014-01-18 21:29:28
您目前有一个圆形的包含。H包括函数.h和函数.h包括原型.h
现在,如果您正在编译一个cpp文件,那么首先调用prototype.h .h,第二行将包含functions.h的内容,这将在它的实际定义之前放置一个对循环结构的引用。
在您的示例中,如果functions.h包含prototype.h. h中定义的结构上的函数,则不应该有任何理由将包含在prototype.h .h中的 functions.h。如果您管理头文件之间的依赖项,您的代码将更容易管理。
就你而言:
而且,通常需要将类/struct及其所有函数保存在一个头文件中。除非文件变得太大,否则可以将函数拆分为多个标头。
注意:强力解决方案可以是在使用函数之前将前向申报添加到struct循环中,但是,我只在无法避免的情况下才保留这种解决方案
https://stackoverflow.com/questions/21210069
复制相似问题