LINUX.ORG.RU

не получается изменить поле структуры в функции которая расположена в другом файле

 


0

2

добрый вечер, пытаюсь понять почему не работает следующий простой пример

file1.c

#include "abc.h"
int main() {
BULK sample; //BULK typedefed in abc.h
sample.offset =0;
change_data(&sample);
printf ("data = %i\n", sample->offset); // выводит 0!!!???
return 0;
} 

file2.c

int change_data(BULK *data) {
     data->offset = 14;
     printf ("data = %i\n", data->offset); // выводит 14
    return 0;
 }

Если весь код разместить в один файл - то все норм отрабатывает. что не так?



Последнее исправление: elmir_k (всего исправлений: 1)

Ответ на: комментарий от looper

Не понятно только, как оно вообще так скомпилировалось.

Waterlaz ★★★★★
()

Объектные файлы, видимо, содержат что-то не то. Например разную версию BULK. Стоит попробовать скомпилировать с нуля.

xaizek ★★★★★
()

вот и выросли дети им не ведан рибилдолл. вместо включить голову они бегут на форум, они генерируют теории (все дело в другом файле), вместо набросать пример они строчат простыни и ждут ответа, у них нет мозга, у них орехи. у них виноват компилятор, ос, астральная фаза, анонимус, только не они, не их косолапость и криворукость, божественные кресты и тайны их сумрака.

anonymous
()

BULK sample;

sample->offset

Это собралось? Выбрось свой компилятор и попробуй использовать нормальный, например, gcc, или clang.

DELIRIUM ☆☆☆☆☆
()

Потому что:

//либо
BULK * sample = malloc(sizeof(BULK));
//и далее только
sample->offset; //ибо указатель на структуру

//либо
BULK sample;
//и далее только
sample.offset; //ибо экземпляр структуры

Dron ★★★★★
()
Последнее исправление: Dron (всего исправлений: 1)
Ответ на: комментарий от Dron

cast maxcom давно всё хотел спросить и попросить подсветку для C более цветастой сделать.

Dron ★★★★★
()
Ответ на: комментарий от xaizek

слона то я и не приметил. так оно и было, - пересобрал все и исправил макефайл - все ок.

elmir_k
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.