2017-02-13 6 views
0

定義を使用して構造体の配列を作成する必要があります。私にそれをする方法を提案してください。defineを使用して構造体の配列を作成する

file1.c have data 
{ 
    "string1", 
    13   
} 

file2.c have data    
{ 
    "string2", 
    14   
} 

それは以下のようなデータを取り込むことができるように共通の定義する1つに、このデータを渡す必要があります:

struct test data[]= 
{ 
    {"string1", 13}, 
    {"string2", 14} 
} 

私はこのようにそれをここで詳しく説明してみましょう:

file1.c 
ADD_DATA_IN_STRUCT(....) ---> pass data {"string1", 13} 

file2.c 
ADD_DATA_IN_STRUCT(....) ---> pass data {"string1", 14} 

main.h 
#define ADD_DATA_IN_STRUCT(....) ---> should expand to 
struct test data[]= 
{ 
    {"string1", 13}, 
    {"string2", 14} 
} 
+0

他の 'c'ファイルにデータがありますか? – RoadRunner

+0

構造体に文字列のハードコピーが含まれているのか、単なるポインタであるのかは明らかではありません。どうか明らかにしてください。そして、 "定義"、 "共通の定義"とはどういう意味ですか?あなたは宣言を意味しますか? – Lundin

答えて

1

はそれが役に立てば幸い私は詳細を省いた。

// 1. define the test struct 
define struct test { 
    char *string; 
    int number; 
}; 

// 2. define the data array 
struct test data[2]; 

// 3. read file, assign value to corresponding fields in data array 
// you may want to dynamically allocated memory for `string` using `malloc` 
// or if the string has a maximum size, define it using `char string[MAX_SIZE]` instead 
+0

申し訳ありませんが、私は、この初期化された構造を事前コンパイル時に必要としていることを詳しく説明しませんでした。したがって、他のファイルからデータを取り込み、初期化された構造体を構築し、プリコンパイル時に存在する共通の#defineを探します。 – ManishB

+0

コンパイラに入る前に、Cソースファイルにコピーされたファイルを持つことを意味しますか?この場合、Cは動的プログラミング言語ではないので、上記のステップを実行してデータファイルとCソースファイルを処理するには、他の言語(Pythonなど)やプログラム( 'shell'スクリプトなど)を使用する必要がありますテキストファイルとして。 –

+0

@ManishBなぜファイルを読み込んで自分で挿入してみませんか?これは最も簡単な方法です。 – RoadRunner

関連する問題