我应该在哪里包含<string>?</string>

时间:2014-06-05 14:34:01

标签: c++ string header-files

我仍然习惯使用C / C ++,我不想'过度包含'库。

我有一个标题,我想放置读取输入数据的方法以及我称之为ofun.h的变量,因为它处理与我试图优化的目标函数有关的信息。在此标题中,我需要定义为string data_name;的数据名称。

我应该在此标头文件中#include <string>吗?如果发生这种情况,我将<string>包含在另一个头文件中,请说file_io.h,然后在我的主程序中调用

#include <string>
#include "ofun.h"
#include "file_io.h"
这会引起问题吗?如果是这样,那么包含这样的标准库以便它们不会发生碰撞的最佳方式/地点是什么?

3 个答案:

答案 0 :(得分:6)

如果标题中的任何内容需要<string>中包含的声明,我会继续将其包含在头文件中。确保头文件不会发生冲突的最佳做法是使用包含警戒:http://en.wikipedia.org/wiki/Include_guard。基本上,您使用以下内容包围标题中的声明:

#ifndef OFUN_H_
#define OFUN_H_

//your header here

#endif

这就是你在onun.h中放入的内容。所有标准库头文件中都包含include guard,您只需要确保将它们放在自己的头文件中。

答案 1 :(得分:1)

例如,如果你需要在ofun.h中使用这个库,那么将它包含在那里。 如果您在onun.h和包含ofun.h的文件中都需要它,则只能在ofun.h中包含它。

答案 2 :(得分:1)

不要害怕。为了保持一致,请在每个使用此标头中声明的标识符的文件中放入您需要的每个标头,即使包含重复标头链也是如此。

卫兵会照顾你。