Créer un tableau de caractères externe dans C
Comment créer un tableau de chaînes de caractères en C?
J'ai essayé diverses façons de définir char cmdval[128]
mais il dit toujours undefined reference to 'cmdval'
Je veux mettre une chaîne en cmdval dans first.c
fichier et l'utiliser dans d'autres second.c
fichier. J'ai essayé d'ajouter un global.h
fichier avec extern char cmdval[128]
mais pas de chance.
Mise à JOUR:
mondiale.h
extern char cmdval[128];
premier.c
#include "global.h"
char cmdval[128];
function(){
strcpy(cmdval, "a string");
}
seconde.c
#include "global.h"
function(){
printf("%s \n",cmdval); //error
}
FAIL 🙁 "undefined reference to `cmdval'"
EDIT:
Je travaille sous linux (édition d'un mini OS xv6 puis compiler et de l'exécuter dans qemu), je ne sais pas si c'est une barrière
source d'informationauteur SMUsamaShah
Vous devez vous connecter pour publier un commentaire.
Vous devez le déclarer dans le .h fichier
Et puis définissez la valeur de la première.c;
Alors tout ce que comprend votre .h fichier, à condition qu'il soit lié avec les premières.o y auront accès.
D'élaborer, de "extern" est en train de dire, il n'y est une variable externe que cette référence... si vous n'avez pas de déclarer ensuite cmdval quelque part, cmdval n'existera jamais, et l'externe de référence ne sera jamais rien de référence.
Exemple:
mondiale.h:
premier.c:
seconde.c:
Vous pouvez le compiler à l'aide de:
Ou faire la .o d'abord les fichiers et de les relier
Vous devriez avoir une unité de compilation dans laquelle vous définir la
cmdval
variable. Leextern
mot-clé ne déclare que la variable existe, il ne la définit pas.Mettre la ligne suivante dans
first.c
second.c
ou dans un autre fichier de votre choix:Extern
ne signifie pas le trouver quelque part, il modifie la variablelinkage
àexternal
ce qui signifie que peu importe combien de temps vous déclarez une variable, il fait référence à la même chose.par exemple, Ces références la même chose en c(pas c++), une variable globale de la liaison par défaut est
external
.Le problème est que vous devriez d'abord compiler en .o, puis les lier ceux-ci .o ensemble.
ou
Dans
second.c
définir
extern char cmdval[128]
dansglobal.h
.