Вопрос может быть очень простым, но я все равно не понимаю ...
У меня есть два файла ... и я упоминаю, что я хочу сделать.
файл 1
...
j = data->alloc_len;
...
файл 2
...
for(i=0;i<j;i++)
...
Из приведенного выше ясно, что я хочу присвоить значение переменной в одном файле и хочуиспользуйте это значение в другом файле.
Я попытался #include "file1.c"
в file2.c, но он дает много ошибок повторного объявления.
Я попытался создать отдельный заголовочный файл, который имеет только одну строку int j
, а затем включилв обоих файлах используется extern
, но опять же нет никакой пользы. Хотя я думаю, что заголовочные файлы предназначены для того, где я могу создать и присвоить значение переменной в одном файле, а затем это значение может быть распространено на все другие файлы, включая этот,
Может быть, я ошибаюсь, но мне это нужно в ближайшее время, поэтому, пожалуйста, помогите мне ... Спасибо заранее.
Ограничение -
Значение можетбыть назначенным только через file1.c
, потому что структура data
объявлена и определена только здесь. Я не могу предоставить значение для variable j
в заголовочном файле.
РЕДАКТИРОВАТЬ:
Хотя я упоминал, но думаю, что не смог очистить свой вопрос. Я попытался использовать заголовочные файлы.
Для отладки я попробовал этот пример
.ч
extern int j;
file1.c
#include "sample.h"
int j=245;
file2.c
#include "sample.h"
printf("%d",j);
ноошибка его получения.
Ошибка, которую я получаю:
Couldn't open module sample.so, tried:
sample.so: cannot open shared object file: No such file or directory
./sample.so.so: cannot open shared object file: No such file or directory
/usr/local/lib/sendip/sample.so.so:
cannot open shared object file: No such file or
directory
/usr/local/lib/sendip/sample.so: undefined symbol: j
* фактически ни один из файлов не содержит основной функции *
На самом деле этоочень большой проект, и я использую Makefile
, и все файлы будут связаны во время выполнения.
Короче говоря, выполнение можно понимать как файл main.c
, который содержит main
, который вповороты вызова file1.c
и который, в свою очередь, вызывает file2.c
Об описательных именах, я бы сказал, что они просто показаны здесь, иначе я уже использую описательные имена.