Как использовать данные из структуры в другом файле C? - PullRequest
2 голосов
/ 21 августа 2011

Я определил структуру "data" в Main.c.

Я хочу использовать значения этой структуры в функции другого файла app.c.

Пожалуйста, предложите, каксделать это.

Ответы [ 3 ]

4 голосов
/ 21 августа 2011

Я предполагаю, что вы спрашиваете о "c", а не о "c #", поскольку ваш вопрос относится к файлам ".c", а не к файлам ".cs" и т. Д .:

Создайте файл заголовка и поместитеструктурировать там.

Включите заголовочный файл в Main.c и app.c

#include "yourFileNameHere.h"
2 голосов
/ 21 августа 2011

Обычно вы определяете прототип функции в заголовочном файле, защищенном с помощью включаемых защит:

//module.h

#ifndef MODULE_H //include guard begin
#define MODULE_H

struct foobar{
   void *a_field;
};
void prototype(void);
#endif       //include guard end

Включающие защитные устройства предотвращают некоторые конфликты, в том числе когда разные файлы должны включать один и тот же заголовок.Они гарантируют, что он будет включен только один раз.

Затем вы можете включить этот заголовок в файл с расширением c, который реализует определенные прототипы:

//module.c

#include "module.h"

void prototype(void){
  //implement prototype function
  struct foobar f;

}

Обычно с каждым файлом заголовка связан файл ac.(это не обязательно; это соглашение).Если вам нужно только определить структуру, вам может даже не понадобиться файл C, связанный с заголовком.Если у вас также есть несколько прототипов функций для реализации, это хороший способ упорядочить ваш код.

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

//otherfile.c

#include "module.h"
struct foobar f;
prototype(); //you can now call prototype function from this file

Теперь возможно скомпилировать и связать вместе оба файла (prototype.c, otherfile.c)

0 голосов
/ 21 августа 2011

Поскольку вы говорите, что хотите повторно использовать значения структуры в другом исходном файле, я предполагаю, что вы определили переменную вашего типа структуры в main.c, например:

struct <mystruct> foobar;

Если вы хотите использовать этот же foobar в app.c, вы должны также объявить эту переменную с добавлением extern :

extern struct <mystruct> foobar;
...