En utilisant la structure ci-dessous, je peux l'utiliser comme ceci par exemple.C++ Passer une référence à une structure anonyme - pouvez-vous?
NMEADecodedSentence s;
auto & gga = s.GGA;
auto alt = gga.Alt;
Mais est-il possible de passer une référence à une structure anonyme à une fonction telle que:
SomeFunc(gga);
Si oui, quel serait le look de signature de la fonction comme? Mes pensées ne vous manquent pas sans nommer les structures mais je voulais juste savoir s'il y avait une façon intelligente de le faire que je ne savais pas!
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;
};
};
Voulez-vous utiliser 'auto' dans une déclaration de fonction? –
pour paraphraser: Vous pouvez le faire, mais ** devrait ** vous? Est-ce que l'omission du nom dans la déclaration vaut vraiment le coup de pouce supplémentaire dans les fonctions de réception? Qu'est-ce que vous en retirerez, vraiment? –
@underscore_d il est possible que la déclaration soit une sorte de bibliothèque ou un code fourni par le fournisseur, donc il ne risque pas de le changer (toujours une mauvaise idée d'éditer les en-têtes qui ont une source externe) – Swift