【发布时间】:2013-10-03 12:42:42
【问题描述】:
我之前遇到了一个问题,因为没有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
我们的,不仅针对 sin,还针对与 math.h 冲突的每个函数。
【问题讨论】:
-
如果您省略
math.h并使用sin而不使用std::,您不会收到错误吗? -
为什么不在前面加上
std::? -
@cnicutar:问题是
<cmath>和朋友可能(也可能不会)将部分或全部函数转储到全局命名空间中。链接问题中的“废话”来自意外调用::abs(int)而不是std::abs(double)。 -
@JesseGood:因为有时我们会犯错。这就是为什么问题是问如果我们犯了那个特定的错误,如何让它成为错误。
-
@TheQuantumPhysicist 同意这是一个非常现实的问题,昨天的 question 是由于没有使用
std版本,而且按照 S) 标准,人们花了一段时间才弄清楚。跨度>
标签: c++ c namespaces math.h cmath