求职面试问题 - 数据结构

时间:2011-04-22 19:27:38

标签: c++ data-structures recursion include

假设我有一组文件,并且在每个文件中都包含#到同一个set中的其他文件。假设我有一个函数加载某个文件中的所有包含。我需要编写加载所有包含的函数给定源文件,所以我将避免无限循环和循环调用include。

要解决我必须使用此功能的问题,我不能使用pragma一次或类似的东西 我认为它可以通过递归解决,虽然我不知道如何

谢谢

4 个答案:

答案 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的常规检查。另一种方法是保存字符串中包含的每个文件的绝对路径(或者可能是相对路径),如果再次遇到包含路径,请不要包含该文件。