【发布时间】:2017-08-07 08:32:51
【问题描述】:
使用如下所示的结构,我可以像这样使用它。
NMEADecodedSentence s;
auto & gga = s.GGA;
auto alt = gga.Alt;
但是是否可以将对匿名结构的引用传递给函数,例如:
SomeFunc(gga);
如果是这样,函数签名会是什么样子?我的想法是不,你不能不命名结构,但我只是想知道是否有一些我不知道的聪明方法!
struct NMEADecodedSentence
{
GNSSSentenceType Type;
GNSSTalkerId TalkerId;
union
{
struct
{
char Time[10]; // UTC time - hhmmss.ss
char Lat[13]; // Latitude (degrees & minutes) - ddmm.mmmmm
char NS; // North/South indicator
char Long[14]; // Longitude (degrees & minutes) - dddmm.mmmmm
char EW; // East/West indicator
uint8_t Quality; // Quality indicator for position fix
uint8_t NumSV; // Number of satellites used (0-12)
float HDOP; // Horizontal Dilution of Precision
float Alt; // Altitude above mean sea level - meters
}GGA;
struct // Recommended minimum data
{
char Time[10]; // UTC time - hhmmss.ss
char Status; // Status, V = Navigation receiver warning, A = Data valid
char Lat[13]; // Latitude (degrees & minutes) - ddmm.mmmmm
char NS; // North/South indicator
char Long[14]; // Longitude (degrees & minutes) - dddmm.mmmmm
char EW; // East/West indicator
float Spd; // Speed over ground - knots
float COG; // Course over ground - degrees
char Date[7]; // UTC Date - ddmmyy
}RMC;
struct // Course over ground and ground speed
{
float COGT; // Course over ground (true) - degrees
float COGM; // Course over ground (magnetic) - degrees
float Kph; // Speed over ground - kph
}VTG;
};
};
【问题讨论】:
-
你想在函数声明中使用
auto吗? -
转述:您可以这样做,但应该吗?在声明中省略名称真的值得在接收函数中使用额外的样板吗?你真的从中得到了什么?
-
@underscore_d 声明可能是某种库或供应商提供的代码,因此他可能不会冒险更改它(编辑具有外部源的标头总是坏主意)