我怎么能只写一次"#include"?

Han*_*ank 1 c++ macros c-preprocessor

在一些大型C++项目中,有许多#include指令.例如,

#include <iostream>
#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
Run Code Online (Sandbox Code Playgroud)

我必须#include在这个例子中写四个.我很懒,我只想写一次.也许是这样的:

#include {
    <iostream>
    <boost/asio.hpp>
    <boost/bind.hpp>
    <boost/date_time/posix_time/posix_time.hpp>
}
Run Code Online (Sandbox Code Playgroud)

有没有办法像这样做?或者我们可以定义一个宏来做到这一点吗?

Oli*_*rth 8

有没有办法像这样做?

没有.

您可以做的最好的事情是将所有#include指令放入专用的头文件中,然后#include在需要的任何地方放置该单个头.

  • 请注意,从长远来看,此解决方案很可能会导致各种不必要的包含依赖项. (13认同)

Sig*_*erm 5

你不能这样做,因为#include使用预处理器,而预处理器就像摇滚一样愚蠢.

但是,您可以编写自己的附加预处理器,将*.cpp文件作为输入,并将扩展的#include语法转换为标准语法.预处理器的示例是moc

或者您可以将所有包含放入单个文件中,但这会添加不必要的依赖项,从长远来看会增加编译时间.

就个人而言,我不会打扰.

复制/粘贴意味着复制

复制代码(例如函数体)很糟糕.但是,#include指令在技术上不是代码.