在C++代码中包含头文件的特定函数
在Python中,你可以从不同的模块中导入特定的功能,而不是把整个文件都导入进来。
比如说:
与其使用 import math
然后用 print math.sqrt(4)
,不如直接导入这个函数:
from math import sqrt
print sqrt(4)
这样也能正常工作。
但是在 C
和 C++
中,你必须包含整个头文件,才能使用它提供的某一个函数。比如在C++中:
#include<iostream>
#include<cmath>
int main(){
cout<<sqrt(4);
return 0;
}
C
的代码也会类似(但不完全相同)。
那么,是否有可能像在Python中那样,只从头文件中包含一个函数到程序里呢?
例如:只包含 cmath
中的 sqrt()
函数?
这样做可以吗?
1 个回答
8
不,这个是不可能的。C++没有真正的模块系统,所以我们只能使用预处理器的包含方式。曾经有个提议想在C++11中加入一种新的模块系统,但最终没有被采纳。想了解更多关于这个提议的信息,可以查看C++模块 - 为什么它们从C++0x中被移除?以后会再回来吗?。
如果你是在说自己的库,唯一的办法就是把这个库拆分成更小、更独立的库。如果这个库不是你的,或者你不能修改它,那你就得接受现状。不过,实际上你遇到的真正问题是什么呢?