3

我有一个巨大的 C 文件。在文件中,有一个巨大的结构(~> 100 万行)。有没有办法使用额外的内核并行编译这个文件?

编辑:对不起,在查看了我的代码和我的问题之后,真正的大事不是“结构”,而是结构数组......

4

1 回答 1

3

如果是超过 100 万行的结构定义,那么您可能不走运。

但是,如果您要声明一个结构变量,它是一个多行结构类型的数组(或者不是一个数组,而只是一个非常大的结构),那么我建议将变量声明单独放在一个单独的 .c 文件中,并且在需要访问它的任何其他 c 文件中使用 extern 关键字。这样,它只需要在更改时重新编译。

例如,如果您有以下情况:

//Filename: onefile.c

struct _bigStruct{
  int type;
  char *name;
}bigStruct[] = {
  {  1, "One" },
  {  2, "Two" },
  {  3, "Three" },
  {  4, "Four" },
  ...
};

int someFunction(int j, int x)
{
  if (j == bigStruct[x])
     //do something
}

然后我将其更改为以下内容:

//Filename: bigstruct.h
struct _bigStruct{
  int type;
  char *name;
};

//Filename: bigstruct.c
struct _bigStruct bigStruct[] = {
{  1, "One" },
{  2, "Two" },
{  3, "Three" },
{  4, "Four" },
...
};

//Filename: main.c
#include "bigstruct.h"

extern struct _bigStruct bigStruct[];

int someFunction(int j, int x)
{
  if (j == bigStruct[x].type)
     //do something
}
于 2012-10-03T21:05:44.850 回答