3

巨大なCファイルが1つあります。ファイル内には、巨大な構造体(〜> 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 に答える