2017-09-08 20 views
-2

私はCプログラミングを初めて使っていませんが、私は多くの時間それに触れる機会がありません。コンフィギュレーションファイルからデータ構造を定義してください

私は、構成ファイルで定義されているデータ構造(構造体)を定義する方法について助言したいと思います。現時点では、設定ファイルの構造を定義していませんが、iniファイルのようなものになると思います。

私は基本的にWindowsとLinuxで作業していますので、どちらのOSでも答えが大好きです。設定ファイルで定義されている

+0

自分で書き込まないでください。そこにはたくさんのものがあります。 1つの例は、JSON形式の設定ファイルです。次に、すべての解析を行うコードをネット上に見つけることができます。 – 4386427

+0

構成ファイルを構造定義または実行時プロセスに変換するプリコンパイラを計画していますか?後者は面倒です。 –

+0

@JonathanLeffler ...前者も後者を扱うことができます(編集:*ハンドル*は、ラッパーを構築することができます)。 – Sebivor

答えて

0

私はデータ構造(構造体)を定義する方法についてアドバイスを希望

最も簡単な方法は、はるかに、ヘッダ(.h)を用いることであろうファイルを設定ファイルとして保存します。

#include CONFIG_FILE 

を...などのようなコンパイル時にそれらを導入:あなたはそうのようなプロジェクトにそれらを含めることができ

cc -D'CONFIG_FILE="path/to/config.h"' path/to/source/files.c 

あなたから機能ライクなマクロにあなたの設定値のすべてをラップした場合非常にスタート、これは素敵で柔軟性があります。あなたのINIファイルからクリーンstructを生成するのに問題はありません。

私はそれが私がCの世界では、を定義することは非常に厳しい意味を持ち、そしてにデータを定義することを指摘すべきであるiniファイルのようなもの

になります推測しています構造体(構造体)は、Cソースファイル(または後でソースファイルに含まれるヘッダーファイル)でのみ実行できます。

自分で調整してください!私の推薦では、(あまり)後の時点まで(つまり、本格的なINI-to-Cヘッダーコンパイラを書く時間があるとき)、レキシング/解析を保留にすることができるインターフェイスを提供するでしょう。それはあなたが尋ねていることです)、あなたにはに空白を記入するためのインタフェースを与えます、そうです。

+0

彼は実行時間について質問します。コンパイル時間ではありません。 –

+0

@ PeterJ_01すでに述べたように、* define *は非常に厳密な意味を持っています。その意味は[ここ](http://port70.net/~nsz/c/c11/n1570.html#6.7p5)で見つけることができます。例は[here](http://port70.net/~nsz/c/c11/n1570.html#6.7.6.1p4)、[here](http://port70.net/~nsz/c/)にあります。 c11/n1570.html#6.7.9p26)、** [ここ](http://port70.net/~nsz/c/c11/n1570.html#6.7.9p28)**および** [セクション全体「外部オブジェクト定義」と題されている](http://port70.net/~nsz/c/c11/n1570.html#6.9.2)**などがあります。標準によると、*定義*は実行環境で発生するプロセスではありません。 – Sebivor

+0

@ PeterJ_01このようなモジュールはコンパイルする必要があります。プログラムの他の部分と同様に、モジュールを単独でテストすることができます。また、コンフィギュレーションモジュールと同様に、残りのプログラムはテストなしでテストできます。 – Sebivor

関連する問題