Utilisation d'une structure dans un fichier d'en-tête "type inconnu" erreur
Je suis en utilisant Kdevelop dans Kubuntu.
J'ai déclaré une structure dans mon datasetup.h fichier:
#ifndef A_H
#define A_H
struct georeg_val {
int p;
double h;
double hfov;
double vfov;
};
#endif
Maintenant, quand je l'utilise dans ma main.c fichier
int main()
{
georeg_val gval;
read_data(gval); //this is in a .cpp file
}
J'obtiens l'erreur suivante:
georeg_chain.c:7:3: erreur: unknown type name 'georeg_val'
(C'est dans le georeg_val gval;
ligne)
Je vous serais reconnaissant si quelqu'un pouvait m'aider à résoudre cette erreur.
source d'informationauteur dead_jake
Vous devez vous connecter pour publier un commentaire.
Dans C on a deux possibilités pour déclarer la structure:
ou
Si vous utilisez la première méthode (donner struct un nom) - vous devez définir la variable en l'indiquant explicitement être
a struct
:Toutefois, si vous utilisez la deuxième méthode (donner struct un alias), alors vous pouvez omettre
struct
identificateur - compilateur peut en déduire le type de variable donné que c'est laalias
:Points Bonus:
Vous pouvez déclarer struct avec à la fois son nom et alias:
Alors dans la définition de la variable, vous pouvez utiliser la première ou à la deuxième méthode. Pourquoi des deux mondes est bon ? Struct alias vous permet de faire des struct des définitions de variables plus courte - ce qui est une bonne chose parfois. Mais struct nom vous permet de faire des
forward declarations
. Qui est l'outil indispensable dans certains cas, de considérer que vous avez des références circulaires entre les structures:Outre le fait que cette architecture peut être imparfaite - cette définition circulaire de compiler lorsque les structures sont déclarées dans la première manière (avec les noms) ET struct pointeurs sont référencés de manière explicite par les marquant comme
struct
.Si vous devez définir un nouveau type, vous devez écrire:
Ensuite, vous pouvez utiliser georeg_val comme un nouveau type.
La définition d'un type struct (sur cet exemple, un arbre de recherche binaire struct):
La déclaration d'une fonction par exemple.: