gpt4 book ai didi

c++ - 如何保证不包含 iostream?

转载 作者:行者123 更新时间:2023-11-30 03:13:37 26 4
gpt4 key购买 nike

#include <iosfwd> in header files and #include <iostream> only in cpp files 被认为是最佳实践。我正在尝试将大量 #include <iostream> 从 header 移动到现有项目中的 cpp 文件。

有没有办法保证 #include 依赖树中没有文件有 #include -d <iostream> ?理想情况下,编译会失败,例如 static_assert

最佳答案

C++ 无法在语言级别真正做到这一点。甚至评论中的一些建议(例如检查 iostream header 的属性是否已存在)也行不通。原因是标题不是孤立的;没有什么可以阻止 .cpp 文件包含 iostream header ,后跟您自己的 header 。检查 header 中的属性会产生误报,因为它不是包含它的 header 。

你的问题是关于一般依赖图的,这不是 C++ 作为一种语言识别的东西(至少,就 header 而言不是)。如果您有 C++20 的模块……好吧,您不会在意,因为模块导入不会导致您试图避免的问题。

因此,任何验证您要测试的内容的尝试最终都将基于构建系统中的某些内容,而不是语言。您最多可以做的是获取哪些 header 包含哪些其他 header 的转储,然后通过某种模式匹配运行它以查找 iostream header 。

关于c++ - 如何保证不包含 iostream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58551224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com