当前位置: 首页 > 知识库问答 >
问题:

我应该使用哪个头文件而不是#include[duplicate]

黄修永
2023-03-14
#include <iostream>
#include <string>
#include <sstream>
//#include <bits/stdc++.h>
#include <iomanip>      // std::setprecision
#include <math.h> 
using namespace std;

我想删除标头#include ,因为它显著地减慢了编译时间。

当我删除它时,我会得到以下错误:

error: cannot convert ‘long double*’ to ‘double*’ for argument ‘2’ to ‘double modf(double, double*)’
       fractpart = modf(val, &intpart);
fractpart = modf(val, &intpart);
if (fractpart != 0) {
    throw Error("ERR");
}

共有1个答案

居晗日
2023-03-14

解决这类问题的办法是查阅有关函数的适当参考资料。一个很受欢迎的C++参考站点是cpPreference.com。在本例中,它对modf的引用以:

标头中定义

这就是你的答案。

将上面对C++标头 中定义的C++版本(重载函数家族)的引用与对C标头 中定义的C版本的引用进行比较:

float modff( float arg, float* iptr );
double modf( double arg, double* iptr );
long double modfl( long double arg, long double* iptr );

C没有函数重载,因此 中的modf只是double版本。 是C++,它声明了所有3个C++重载(floatdoublelong double),您使用的是最后一个重载。

这实际上是避免使用C标准库头(<*.h>)而使用C++标准库头( )的原因之一。

 类似资料:
  • 我的老师让我这样做,但在评论区我被告知我不应该这样做。 为什么?

  • 问题内容: API文档说永远不要捕获 Throwable 子类 错误 ,这表示异常行为。这是否意味着错误和异常之间的隔离是为了告诉程序员应该捕获哪个子类,而不应该捕获哪个子类?还是还有更多呢? 问题答案: 通常,这是严重错误(通常 在平台本身内部 ),您无法想象得到处理。我曾经关心醒目的唯一时间是为了 记录它 ,下面我再重新抛出。 这是非常重要的,因为它很容易让错误(和运行时异常),以这样的方式,

  • 问题内容: 在这个问题中,如何在C 11中有效地选择标准库容器?是选择C 集合时要使用的便捷流程图。 我认为对于那些不确定应该使用哪个集合的人来说,这是一个有用的资源,因此我试图找到类似的Java流程图,但未能做到。 哪些资源和“备忘单”可用来帮助人们选择使用Java进行编程时使用的正确Collection?人们如何知道应该使用哪些List,Set和Map实现? 问题答案: 由于找不到相似的流程图

  • 在这个问题中,如何在C 11中有效地选择标准库容器?是选择C集合时使用的方便流程图。 我认为对于那些不确定应该使用哪个集合的人来说,这是一个有用的资源,所以我试图找到一个类似的Java流程图,但没能做到。 有哪些资源和“备忘单”可以帮助人们在用Java编程时选择正确的集合?人们如何知道他们应该使用什么列表、集合和映射实现?

  • 问题内容: 从log.go(执行日志包): 只是一个函数包装器,为什么我应该用它代替or ? 有实际原因吗? 问题答案: 两件事不同: 通过包日志进行打印对于并发goroutine是安全的(而普通的则不是) 日志可以自动添加计时信息。 因此,这是两件完全不同的事情。log用于记录和格式化。(好吧,log使用相同的动词和标志,但这很方便)。

  • 问题内容: Python 2.6引入了一个功能。 为什么有这个必要?可以总是输入而不是。 后者更多吗? 问题答案: PEP 3114描述了此更改。动机摘录: 该PEP建议将该方法重命名为,与Python中所有其他协议一致,在该协议中隐式调用方法作为语言级协议的一部分,并引入一个名为的内置函数来调用方法,与显式调用其他协议的方式。 请务必阅读此PEP,以获取更多有趣的细节。 至于为什么 你 要使用内