la déclaration d'une structure dans .h de fichier et la mise en œuvre .fichier c
c'est mon .h fichier:
struct _MyString;
typedef struct _MyString MyString;
je voudrais déclarer ses membres dans la .c fichier.
j'ai essayé:
typedef struct MyString{
char * _str;//pointer to the matrix
unsigned long _strLength;
}MyString;
mais ça ne fonctionne pas.
comment dois-je déclarer la structure de cadres dans le .fichier c?
merci
Ce qui n'a pas de travail? Donner des messages d'erreur spécifiques, les symptômes.
Je ne peux pas tester ce droit maintenant, mais je suppose que c'est parce que vous définition de type ed _MyString à MyString mais ensuite défini une structure nommée MyString. Vous voulez sans doute définir _MyString sans un typedef dans votre .c fichier.
Je ne peux pas tester ce droit maintenant, mais je suppose que c'est parce que vous définition de type ed _MyString à MyString mais ensuite défini une structure nommée MyString. Vous voulez sans doute définir _MyString sans un typedef dans votre .c fichier.
OriginalL'auteur maayan | 2010-11-09
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin seulement de 1 typedef. Gardez celui que vous avez déjà dans le .h fichier et supprimer tous les autres.
Maintenant, la structure nom est
struct _MyString
. C'est ce que vous définissez dans l' .c fichier, passtruct MyString
: notez l'absence des '_'.Donc
.h fichier
.c fichier
OriginalL'auteur pmg
Exactement ce qui ne fonctionne pas? Si vous essayez d'accéder à cette structure à partir d'un autre
.c
fichier, ça ne marchera pas. L'ensemble de la structure déclaration doit être visible de tous les fichiers source qui l'utilisent - typiquement, cela se fait en la déclarant dans un fichier d'en-tête et#include
-ing dans les fichiers source.Peut-être vous êtes confus ce avec la manière dont les fonctions sont déclaré dans un fichier d'en-tête et défini dans un fichier source - la déclaration doit toujours être visible de tous les fichiers source.
OriginalL'auteur casablanca
Si vous avez besoin d'utiliser une structure dans une .c "fichier" puis il a besoin de la définition complète de la structure lors de la compilation. Cela se fait souvent par #, y compris un fichier d'en-tête avec la définition.
Si vous n'avez pas besoin de partager la structure de définition, vous pouvez le placer à l'intérieur d'un .c fichier mais il ne sera visible que pour les fonctions à l'intérieur du fichier.
Il semble que vous essayez d'avoir une interface à votre structure et à seulement définir dans un .fichier c pour arrêter d'autres parties de votre code d'accès à la structure. Vous pouvez le faire, mais seulement par l'intermédiaire d'un pointeur. Ainsi, par exemple:
Et dans le .c fichier, vous pouvez le définir. Vous pouvez définir des fonctions à l'aide de la MyString typedef la place.
OriginalL'auteur Cthutu
s'il vous plaît être clair sur ce qui n'est pas de travail pour obtenir une solution correcte.
qu'est-ce que je pense qui pourrait être le problème, c'est que vous devez inclure .h fichier dans le .c fichier où vous pouvez définir la structure.
Aussi incldue .h dans tous les .c fichiers qui a besoin de cette struture. Assurez-vous que vous extern cette structure dans ce cas.
OriginalL'auteur prap19