C++ math.h和cmath之间的冲突?

C++ math.h和cmath之间的冲突?,c++,C++,由于“模棱两可”,我在编译时遇到困难。 我有: #包括 #包括 浮点数q; 设置激活(1/(1+pow(M_E,-q)); 编译器说: ISO C++表示,这些都是模棱两可的,即使第一个最坏的转换比第二个最坏的转换更好: 双倍功率(双倍,双倍) 浮动标准::功率(浮动,浮动) 我试着在pow()的参数中插入直接的十进制值,它是有效的。它似乎很难接受一个变量 预先感谢。 < P>这是因为C++标准库包含C标准库-数学。h和CyMax应该是相同的,除了CMASET把所有的东西放在 STD::/Co

由于“模棱两可”,我在编译时遇到困难。 我有:

#包括
#包括
浮点数q;
设置激活(1/(1+pow(M_E,-q));
编译器说: ISO C++表示,这些都是模棱两可的,即使第一个最坏的转换比第二个最坏的转换更好:

双倍功率(双倍,双倍) 浮动标准::功率(浮动,浮动)

我试着在pow()的参数中插入直接的十进制值,它是有效的。它似乎很难接受一个变量


预先感谢。

< P>这是因为C++标准库包含C标准库-数学。h和CyMax应该是相同的,除了CMASET把所有的东西放在<代码> STD::/Cord>命名空间中。所以不要把它们都包含在一起——如果你使用C++,你可能应该<代码> >包含< /Calp>< Stime>只有>

< p>你可能有一个使用命名空间STD的<代码>;代码>在那里的某个地方,不是吗?您还可以指定所需的版本,即使用std::pow或
使用::pow
(语法来自内存,但希望您能理解)。

错误消息告诉您应该传入两个浮点或两个双精度浮点。你是用双人和浮球传球

尝试
pow(M_E,static_cast(-q))

无论如何,我不能从g++(4.5.3)中得到这个错误。我可以从Comeau中得到类似的错误,即使我只包含两个标题中的一个(不管是哪一个)


可能gcc的实现有一些细节,这意味着只有一个匹配版本的
pow
。在编译器上,只包含一个头或者为
pow
指定名称空间也可以消除歧义。但是依靠依赖于实现细节的修复通常不是一个好主意。

我通常添加
,因为
的大多数实现只包括
使用
std
命名空间中的
函数。@Naszta但这是由实现本身完成的实现定义了它的实现方式(是的,我喜欢这个词!)当这(即依赖于实现定义的行为)破坏了您的代码时,您的错误就是一个典型的错误。基本上,我只在
中使用这种做法。这样,我也不应该关心
std
名称空间。(代码1)。<代码> CMASED>代码>是C++的代码>数学。
#include <cmath>
#include <math.h>

float q;
setActivacion(1/(1+pow(M_E,-q)));