c++ - 使用 cmath 时禁用 math.h 废话

标签 c++ c namespaces math.h cmath

<分区>

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

Removing using namespace std causes the program to get crap results

有没有一种方法可以禁用所有那些来自 c 的非标准函数,并且只能与命名空间 std 下的 c++ 函数一起使用(而不必使用 using namespace std;)?

换句话说:如果我使用 sin() 而不是 std::sin() 我想得到一个错误,这样我就不会犯那个错误.的c 我们的,不仅是罪恶,还有与 math.h 冲突的每个函数。

最佳答案

不幸的是,没有办法做到这一点。规则是 #include <math.h>将所有名称放入全局命名空间,也允许将它们放入 std:: .同样,#include <cmath>将所有名称放入 std:: , 并且也被允许将它们放入全局命名空间中。允许使用无关命名空间的原因很简单,如果不对现有库进行重大手术,纯版本通常无法实现,而这些库甚至可能不受 C++ 编译器人员的控制。

关于c++ - 使用 cmath 时禁用 math.h 废话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19159541/

相关文章:

c++ - 在 wxWidgets 中显示静态图像?

c - 尝试在 xv6 操作系统中实现三重间接寻址时 XV6 崩溃

delphi - Delphi中类名相同的两个单元中的两个类

namespaces - Clojure : missing namespace errors when running "use" at the REPL

c++ - 如何转发元组类型以专门化其他模板?

c++ - 我们如何在 openGL 中相对于一个点(而不是原点)旋转 2d 中的图形?

c 文件我得到的只是一个无限循环

laravel - 从具有命名空间的多态关系中获取数据

c++ - 它是如何跳出这个 C++ 代码中的 for 循环的?

c++ - 关于加密歌曲