Ho molti sensori a 3 assi diversi per cui sto scrivendo il codice di prova. Nei file C per ciascuno di essi, ho la stessa stringa char definito:Come definire una matrice di stringhe di caratteri nel file di intestazione?
char axis[3][8] = {"X", "Y", "Z"}
che uso quando ho "per" i risultati del ciclo di stampare l'asse che non riesce in questo modo:
DEVICETEST_LOG("%s Failed %s axis for Min range\n",device_name[DUT], axis[i]);
Stavo pensando di risparmiare spazio potrei definire un array di stringhe di caratteri in un file di intestazione da usare dappertutto.
Ho provato un certo numero di cose, ma non riesco a ottenere un array di stringhe definito nel mio file di intestazione che posso scorrere per passare una compilazione.
ah che ha senso, ma sembra bassackwards ... Quindi il file di intestazione che includo ovunque punta tutti gli altri file C alla definizione locale "myfile.c". – user1054210
Quindi, anche se ho incluso il file di intestazione negli altri file c, sto ricevendo un errore di compilazione "refrenza indefinita". Quindi in myheader.h ho >> extern char * AXIS [3] [8]; e in myfile.c ho >> char * AXIS [3] [8] = {{"X"}, {"Y"}, {"Z"}}; e sto includendo myheader.h nell'altro file.c. Ho provato anche qualche altro trucco, ma non sono sincronizzati. – user1054210
Qualcos'altro è sbagliato, perché funziona ... cosa succede se estrai la macro dall'equazione e cerchi semplicemente di accedere alla matrice in un altro modulo di codice che include il file di intestazione? In secondo luogo, dovrebbe essere solo 'const char * AXIS [3] = {" X "," Y "," Z "};' dato che questi sono stringhe letterali ... da dove ottieni il '8'? – Jason