在C++代码中包含头文件的特定函数

7 投票
1 回答
10981 浏览
提问于 2025-04-18 08:09

在Python中,你可以从不同的模块中导入特定的功能,而不是把整个文件都导入进来。

比如说:

与其使用 import math 然后用 print 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中那样,只从头文件中包含一个函数到程序里呢?
例如:只包含 cmath 中的 sqrt() 函数?

这样做可以吗?

1 个回答

8

不,这个是不可能的。C++没有真正的模块系统,所以我们只能使用预处理器的包含方式。曾经有个提议想在C++11中加入一种新的模块系统,但最终没有被采纳。想了解更多关于这个提议的信息,可以查看C++模块 - 为什么它们从C++0x中被移除?以后会再回来吗?

如果你是在说自己的库,唯一的办法就是把这个库拆分成更小、更独立的库。如果这个库不是你的,或者你不能修改它,那你就得接受现状。不过,实际上你遇到的真正问题是什么呢?

撰写回答