c ++:在函数体内是否可以#include?

don*_*lmg 6 c++

我想只在调用某个函数体时才包含头文件?

在C++中这是可行的还是推荐的?

unw*_*ind 11

没有.

你有点不对劲; #include根本不在运行时处理.#include基于程序执行特性的文件是不可能的; 一旦程序执行它的源是固定的(因为它已经编译).


CB *_*ley 7

可能,是的; 建议不,通常不是.

#include 是进程和解析的早期阶段,所以在许多地方工作,而不考虑包含点的语言上下文.

请注意,无论函数是否被调用,都会发生包含,因此它可能无法解决您尝试解决的问题.包含的文件将直接放在函数体内,因此包含文件必须设计为包含在源文件中的这一点上.


Bal*_*arq 5

您显然偏向于更高级的语言,例如 Python,在其中可以执行以下操作:

if ( a ):
  from whatever import whatever_I_need
else:
  from whatever_else import whatever_I_need
Run Code Online (Sandbox Code Playgroud)

然而,在 C++ 中,这是在编译时计算的(实际上,#include是一个预处理器指令,它甚至在编译时之前计算)。将它放在 if-else 结构的块中只会导致编译错误。只需考虑到#include只是将文件(通常是头(接口)文件)的内容转储到另一个需要其声明的内容的方法。非常低的水平。无论如何它都会被包括在内。