[英]Include multiple header-files at once with only one #include-expression?
语法是否有任何可能的表达式一次包含多个标头,而无需为每个新文件编写“#include”-表达式?
比如,例如:
#include <stdio.h>, <stdlib.h>, <curses.h>, <string.h> /* Dummy-Expression 1. */
OR
#include <stdio.h> <stdlib.h> <curses.h> <string.h> /* Dummy-Expression 2. */
问题是针对 C 和 C++。
不,那里没有。
为您希望执行的每个包含操作编写一个#include
指令。
但是,您可以拥有一个“实用程序”header,它除了包含您经常使用的许多其他标头之外什么都不做。 然后,您只需包含一个实用程序 header。 这是否是一个好主意,是一个见仁见智的问题。
如果您沿着这条路线走 go,请不要试图开始依赖内部实现标头。
不,没有办法做到这一点。 您必须输入(或复制)每个#include
到自己的行,如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <curses.h>
#include <string.h>
这适用于 C 和 C++。
其他一些答案讨论了创建另一个包含这些文件的 header 文件,但我不打算讨论这样做。 这通常是一个坏主意,并且会在更改 header 文件时导致命名空间污染和需要重新编译等问题。
没有语法。 但是,如果您真的想要这样的东西,那么只需创建一个新的 header ,其中只包含您想要的标题的多个#include
语句,然后在需要时使用#include "combo-header.h"
。 不过我不鼓励这样做。 最好只在你使用它的地方明确包含你使用的东西——有几个原因; 编译时间和命名空间污染是最重要的。
您可以制作一个包含所有常见包含的 header 文件,并将其包含在您的文件中:
文件common.h
:
#include <stdio.h>
#include <stdlib.h>
#include <curses.h>
#include <string.h>
在您的文件中,您可以包含该文件:
#include <common.h>
它可以在辅助 header 的帮助下完成,包括 header:
#define HEADERS (<stdio.h>)(<stdlib.h>)(<curses.h>)(<string.h>)
#include "Headers.inl"
Headers.inl
对HEADERS
序列中的每个项目执行包含:
// Headers.inl
#include <boost/preprocessor/seq.hpp>
#if(0 < BOOST_PP_SEQ_SIZE(HEADERS))
#include BOOST_PP_SEQ_ELEM(0, HEADERS)
#endif
#if(1 < BOOST_PP_SEQ_SIZE(HEADERS))
#include BOOST_PP_SEQ_ELEM(1, HEADERS)
#endif
#if(2 < BOOST_PP_SEQ_SIZE(HEADERS))
#include BOOST_PP_SEQ_ELEM(2, HEADERS)
#endif
#if(3 < BOOST_PP_SEQ_SIZE(HEADERS))
#include BOOST_PP_SEQ_ELEM(3, HEADERS)
#endif
…
它可以通过让 boost 预处理器使用BOOST_PP_SEQ_POP_FRONT
和递归包含自身来处理所有重复来简化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.