【问题标题】:Include specific function from a header file into the code in c++将头文件中的特定函数包含到 C++ 中的代码中
【发布时间】:2014-05-31 21:28:50
【问题描述】:

在 python 中,可以从不同的模块导入特定的功能集,而不是导入整个文件

例如:

不用import mathprint math.sqrt(4),直接导入函数:

from math import sqrt
print sqrt(4)

而且效果很好。


CC++ 中,必须包含整个头文件才能使用它提供的一个功能。比如,在C++中

#include<iostream>
#include<cmath>
int main(){
    cout<<sqrt(4);
    return 0;
}

C 代码也将相似(不一样)。


是否有可能就像在 python 的情况下一样,可以只将头文件中的一个函数包含到他们的程序中?
例如:只包括来自cmathsqrt() 函数?

可以吗?

【问题讨论】:

  • @JustinBarber:我认为 OP 是在寻求一种在 C++ 中执行此操作的方法,并且只是提供了一个 Python 示例以供参考。
  • @Christian Hackl 啊,谢谢你的澄清!我被这个问题弄糊涂了,没有看到 C++ 标签。 Python 还有一个名为 cmath 的模块。
  • @JustinBarber:我猜 OP 只是接受了一些自动提出的标签,并没有意识到他的问题会被 Python 人和 C++ 人看到。

标签: python c++ include header-files


【解决方案1】:

不,这是不可能的。 C++ 缺乏真正的模块系统,所以我们只剩下预处理器包含。添加一种新的模块系统的提议没有进入 C++11。有关该提案的更多信息,请参阅C++ Modules - why were they removed from C++0x? Will they be back later on?

如果这是关于您自己的库,您唯一的机会是将库拆分为更小的独立库。如果图书馆不是你的和/或你不能改变它,你将不得不忍受它。但真正的问题是什么?

【讨论】:

  • 嗯,据我所见,Windows 机器上的 C++ 代码的编译时间异常长,但在基于 unix 的系统上,一切都快如闪电。
    我是 Windows 粉丝并且发现必须等待至少 8-10 秒真的很烦人,即使 "hello world" 代码编译也是如此。主要原因是大的头文件。
    我相信,如果可以只包含所需的功能,而不是整个文件,事情会更好。
  • @zibs.shirsh:编译时间取决于成千上万的事情。我不认为操作系统家族扮演了重要的角色。 Windows 操作系统中绝对没有任何东西会神奇地降低所有已知的 C++ 编译器的速度。
  • -就像我说的,只是我在几台机器上注意到的。可能不是一个普遍的事实,但并不少见。
  • @zibs.shirsh:我想您应该尝试找出为什么在一个系统上编译相同代码的速度如此之慢的真正原因。你为什么不发布一个新问题?确保添加整个代码(对于一个 hello world 程序,它应该只是几行代码),说明您的确切系统规格、操作系统和编译器版本(以及硬件规格,如果我们谈论的是两台不同的机器),显示您是如何调用的无论哪种情况,编译器都会告诉我们一些实际的、测量的速度数字。
  • P.S.:这是一个疯狂的猜测:您对 Windows 编译器使用了更复杂的优化选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-25
  • 2014-11-26
  • 2021-09-19
  • 1970-01-01
  • 2018-11-06
相关资源
最近更新 更多