Как использовать stuct из другого c исходного файла? - PullRequest
0 голосов
/ 15 июля 2011

я получил static struct ARP_entry ARP_table[ARP_TABLE_SIZE]; в start.c, и я хочу передать эту таблицу функции fill() в table.c

у меня есть #include "table.c" в start.c, потому что он мне нужен для этой функции, верно? если я включаю start.c в table.c, он попадает в какой-то странный цикл или что. Любое предложение?

Смысл в том, чтобы объявить таблицу в start.c, заполнить ее информацией из table.c и отправить ее из start.c

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 15 июля 2011

Никогда не включайте .c файлы. Переместите определение структуры в файл .h и включите его.

1 голос
/ 15 июля 2011

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

включает заголовочный файл в оба файла .c.

0 голосов
/ 15 июля 2011

start.c

#include "table.h" /* fill() */
#include "arpheader" /* struct ARP_entry */

int main(void) {
    static struct ARP_entry ARP_table[ARP_TABLE_SIZE];
    fill(ARP_table, sizeof ARP_table / sizeof *ARP_table);
    return 0;
}

table.c

#include "table.h" /* self check */
#include "arpheader" /* struct ARP_entry */

int fill(struct ARP_entry *table, size_t n) {
  /* code */
  return 0;
}

table.h

#ifndef H_TABLE_INCLUDED
#define H_TABLE_INCLUDED

#include <stddef.h> /* size_t */
#include "arpheader" /* struct ARP_entry */
int fill(struct ARP_entry *table, size_t n);

#endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...