假设我有一组文件,并且在每个文件中都包含#到同一个set中的其他文件。假设我有一个函数加载某个文件中的所有包含。我需要编写加载所有包含的函数给定源文件,所以我将避免无限循环和循环调用include。
要解决我必须使用此功能的问题,我不能使用pragma一次或类似的东西 我认为它可以通过递归解决,虽然我不知道如何
谢谢
答案 0 :(得分:4)
定义预处理器变量,通常为“CLASSNAME_H”
检查变量是否已定义,如果没有,则定义变量并执行代码。例如:
#ifndef USER_H
#define USER_H
#include "Other.h"
class User { };
#endif
这就是你所说的,对吧?
答案 1 :(得分:3)
来自Wiki:
在C和C ++编程语言中, #pragma once 是一种非标准但广泛支持的预处理程序指令,旨在使当前源文件仅在一次编译中包含一次。
答案 2 :(得分:2)
我想你想看看Topological sorting。
答案 3 :(得分:0)
根据您的评论,您似乎无法使用包含警卫或#pragma once
的常规检查。另一种方法是保存字符串中包含的每个文件的绝对路径(或者可能是相对路径),如果再次遇到包含路径,请不要包含该文件。