Вы должны объявить это в файле .h
extern char cmdval[128];
А затем определите значение в first.c;
char cmdval[128];
Тогда все, что включает ваш файл .h, при условии, что оно связано с first.o, будет иметь к нему доступ.
Чтобы уточнить, "extern" говорит, что есть внешняя переменная, на которую она будет ссылаться ... если вы не объявите где-то cmdval, cmdval никогда не будет существовать, а ссылка extern никогда не будет ссылаться на что-либо.
Пример:
global.h:
extern char cmdval[128];
first.c:
#include "global.h"
char cmdval[128];
int main() {
strcpy(cmdval, "testing");
test();
}
second.c:
#include "global.h"
void test() {
printf("%s\n", cmdval);
}
Вы можете скомпилировать это с помощью:
gcc first.c second.c -o main
Или сначала создать .o файлы и связать их
gcc -c first.c -o first.o
gcc -c second.c -o second.o
gcc first.o second.o -o main