迭代通过其他源文件中定义的数组

时间:2017-03-24 13:08:41

标签: c callback

对于某人而言,这可能只是一个简单的问题:

如何遍历其他c源文件中定义的数组。 这是一个例子:

源文件 producer.c

typedef struct 
{
   int   a;
   int   b;
}values;

values myvalues[] =
{
   { 2, 5 }, 
   { 10,15},
   { 20,25},
   { 30,35},
   { 40,45},
};

源文件 consumer.c

static void iterateLoop (void)
{
   int i;
   int x = 5;

   for (i = 0; i< (sizeof(myvalues)/sizeof(values)); i++)
   {
      // Do something with myvalues[i].a;
      if (x != myvalues[i].b)
      {
         // something;

      else
      {
         // something;
      }
   }
}

这可以通过使用回调来完成吗?我需要一个第三个源文件作为接口或消费者可以直接访问生产者吗?

1 个答案:

答案 0 :(得分:2)

你可以这样做:

您需要一个头文件 values.h

typedef struct
{
  int   a;
  int   b;
} values;

源文件 producer.c

#include "values.h"

values myvalues[] =
{
  { 2, 5 },
  { 10,15 },
  { 20,25 },
  { 30,35 },
  { 40,45 },
};

int nbofvalues = sizeof(myvalues) / sizeof(myvalues[0]);

源文件 consumer.c

#include "values.h"

extern values myvalues[];
extern int nbofvalues;

static void iterateLoop(void)
{
  int i;
  int x = 5;

  for (i = 0; i < nbofvalues; i++)
  {
    // Do something with myvalues[i].a;
    if (x != myvalues[i].b)
    {
      // something;
    }
    else
    {
      // something;
    }
  }
}