c++ - 当多个文件需要时在哪里插入#include C++
问题描述
假设我有 4 个源文件 main、aux1、aux2 和 aux3,它们都使用字符串,因此需要#include <string>
.
主要的将包括 3 个辅助,因为它将使用它的功能,但任何辅助都不需要包括主要或任何其他辅助。
我应该在哪里包含字符串以及如何#pragma once
帮助我解决这种情况?
解决方案
标题应包括他们使用的内容。从长远来看,偏离这一点会导致痛苦。因此:
// aux1.h
#include <string>
// aux2.h
#include <string>
// aux3.h
#include <string>
// main.cpp
#include "aux1.h"
#include "aux2.h"
#include "aux3.h"
原则上,您可以在包含其他头文件之前包含<string>
in main
,然后即使其他头文件不包含,代码也会编译<string>
。但是,这非常脆弱,因为代码的正确性取决于包含的顺序。标题auxX.h
应该是正确的,与其他标题是否已包含无关。
[...] 像#pragma 这样的东西曾经如何帮助我解决这种情况?
您应该为自己的标题使用标题保护,尽管<string>
已经有标题保护并且多次包含它并不是您需要担心的事情。
推荐阅读
- java - 如何在函数参数中使用全局变量?
- css - 用 css 列填充子元素的剩余高度
- c++ - 堆栈溢出?非常深的递归过程中的有趣行为
- c++ - std::copy 导致“变量周围的堆栈”已损坏”错误
- javascript - 在 javascript 中获取 ASP.NET 会话值?
- android - 我没有在没有错误的情况下在活动中获得 recyclerView
- apache-spark - 在 spark scala 中动态创建 CSV 文件头
- reactjs - 仅当状态与当前值不同时如何在反应挂钩中设置状态
- mysql - Laravel 7 从 SQL 文件中填充突变
- c++ - 声明指向自定义优先级队列的指针