在同一名称空间中声明变量和函数是否会出错? [C ++]

时间:2018-01-28 20:07:00

标签: c++ namespaces

如果我创建一个名称空间Maths并使用另一个名为Maths的名称空间库,我是否会因重新声明像PI这样的变量或重新定义像add这样的函数而出错?

我问,因为如果我选择不使用名称空间,那么做这些事情会出错,对吗?

如果我没有使用命名空间得到错误,但我没有使用命名空间,那么不使用命名空间更安全吗?

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

首先,名称空间必须是global而在namespace不同的same您可以使用same namespace函数或变量,但在 namespace A { int i=10; char i ='a';/** is not valid **/ void print() { ... } } namespace B { float i = 1.5; /** valid **/ void print() { /** valid **/ ... } } 中您可以两次都有相同的变量声明。

namespace A

Bi的上述示例中,您分别有int i类型和float valid类型,namespace A 1}}但是在i本身你不能有不同类型的变量user = int(input("How many colors?:")) for i in range(user): print("Color {}".format(i+1)) (被视为重新声明)

答案 1 :(得分:0)

决定自己测试一下:

//in file testnamespace.h
namespace test
{
  int t = 1;
  void fooo(){};
}

//in file testnamespace2.h
namespace test
{
  int t=10000;
  void fooo(){int x = -2;}
}

//in file test.cpp
#include "testnamespace.h"
#include "testnamespace2.h"
int main()
{
  int ayyyeee = test::t;
  foo();
  return 0;
}

这给重新定义,多次初始化带来了错误。

我所寻找的一切。