Rob*_*rtS 7 c c++ syntax include header-files
语法是否有可能一次包含多个标头的表达式,而无需为每个新文件编写“ #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. */
Run Code Online (Sandbox Code Playgroud)
问题是针对C AND C ++的。
不,那里没有。
#include为您希望执行的每个包含操作编写指令。
但是,您可以拥有一个“实用程序”标头,该标头除了包含您经常使用的许多其他标头之外什么也不做。然后,您只需包含一个实用程序标头。这是否是一个好主意,是一个意见问题。
如果您走这条路,请不要试图依赖于内部实现标头。
不,没有办法做到这一点。您必须将每个输入(或复制)#include到自己的行中,如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <curses.h>
#include <string.h>
Run Code Online (Sandbox Code Playgroud)
这适用于 C 和 C++。
其他一些答案讨论了创建另一个包含其中每个头文件的头文件,但我不打算讨论这样做。这通常是一个坏主意,会导致命名空间污染和更改头文件时需要重新编译等问题。
可以借助辅助标头(包括标头)来完成:
\n\n#define HEADERS (<stdio.h>)(<stdlib.h>)(<curses.h>)(<string.h>)\n#include "Headers.inl"\nRun Code Online (Sandbox Code Playgroud)\n\n其中Headers.inl按顺序执行包含每个项目的操作HEADERS:
// Headers.inl\n#include <boost/preprocessor/seq.hpp>\n\n#if(0 < BOOST_PP_SEQ_SIZE(HEADERS))\n#include BOOST_PP_SEQ_ELEM(0, HEADERS)\n#endif\n\n#if(1 < BOOST_PP_SEQ_SIZE(HEADERS))\n#include BOOST_PP_SEQ_ELEM(1, HEADERS)\n#endif\n\n#if(2 < BOOST_PP_SEQ_SIZE(HEADERS))\n#include BOOST_PP_SEQ_ELEM(2, HEADERS)\n#endif\n\n#if(3 < BOOST_PP_SEQ_SIZE(HEADERS))\n#include BOOST_PP_SEQ_ELEM(3, HEADERS)\n#endif\n\n\xe2\x80\xa6\nRun Code Online (Sandbox Code Playgroud)\n\nBOOST_PP_SEQ_POP_FRONT它可以通过让 boost 预处理器处理自身的所有重复和递归包含来简化。
| 归档时间: |
|
| 查看次数: |
192 次 |
| 最近记录: |