使用cmath 时禁用math.h废话

之前我遇到了一个问题,因为函数在没有std::情况下被重载。 诅咒仍然时不时发生,因为我不使用using namespace std;

删除使用命名空间std会导致程序获得废话结果

有没有办法禁用所有来自c的非std函数,只能在命名空间std下使用c ++函数(不必using namespace std; )?

换句话说:如果我使用sin()而不是std::sin() ,我想得到一个错误,这样我就不会犯这个错误。 当然,不仅是罪,而且是与math.h发生冲突的每一个function。

不幸的是,没有办法做到这一点。 规则是#include 将所有名称放入全局名称空间,并且也允许将它们放入std:: 。 类似地, #include 将所有名称放入std:: ,并允许将它们放入全局名称空间。 允许无关名称空间的原因很简单,纯版本通常无法实现,无需对现有库进行大手术,甚至可能不受C ++编译器人员的控制。

将所有函数声明从math.h收集到namespace neveruse ,并说using namespace neveruse 。 现在所有对不合格sin提法都是含糊不清的。