名称空间中的函数
我想要具有相同名称但使用不同名称空间的函数。我宣布在命名空间中的函数:名称空间中的函数
GPS.cpp
namespace NSpace_IMUandGPS
{
//Read GPS Data Set Raspberry Pi's Time and date
void ReadGPS(FD &Fd, bool &GPSready, bool &TimeConfigured, S_POS &POS, S_GPS&GPS, S_IMU &IMU, double &Velocity)
{
...
}
}
GPS.h
namespace NSpace_IMUandGPS
{
void ReadGPS(FD &Fd, bool &GPSready, bool &TimeConfigured, S_POS &POS, S_GPS &GPS, S_IMU &IMU, double &Velocity);
}
Main.cpp的
我想在main中使用未在NSpace_IMUandGPS命名空间中声明的结构。那么,我该怎么做?如果我在名称空间中声明函数,是否所有变量都必须在相同的名称空间中定义?
您不需要在该名称空间中定义在特定名称空间中使用的东西。
您的namespace NSpace_IMUandGPS
将成为全局无名称命名空间的一部分。因此,如果功能ReadGPS
中使用的structs
不在任何其他名称空间内,那么在函数ReadGPS
内部访问它们时不会发现任何问题。
你可以调用函数中main
如下:NSpace_IMUandGPS::ReadGPS(/*all the required parameters*/);
一般来说,如果variables/functions
没有任何namespace
那么他们可以通过自己的名字本身就可以使用里面定义。
如果variables/functions
在某些namespace
内部定义,那么在使用它们时需要指定namespace
。
例如:
struct XYZ
{
int c;
};
namespace ABC
{
int a;
struct PQR
{
int b;
};
Func_1(XYZ st1, PQR st2);
}
Func_2(XYZ st1, ABC::PQR st2);
struct XYZ and Func_2
是全球无名namespace
的一部分。 int a and struct PQR
是namespace ABC
的一部分。
现在如果你看到Func_1
可以访问struct XYZ
,即使它没有在namespace ABC
里面定义。这是因为namespace ABC
本身就是全球无名的namespace
的一部分。
但是,如果一个函数这是目前在全球无名namespace
如Func_2()
然后序里面使用namespace ABC
的事情,你需要指定的namespace
像ABC::PQR
名称。
您可以使用::运算符来处理命名空间。 语法:namespace::function();
所以,如果你wannt给你,例如std名称空间中使用:std::merge();
,如果你想使用你的代码中使用:NSpace_IMUandGPS:ReadGPS();