2016-08-03 6 views
1

(私はここにそのような質問を投稿できるかどうか分かりません)Python C++またはC++で純粋なファイルテンプレート操作ですか?

私には問題があります。私はいくつかのパラメータ(基本的には数字です)を派生させるC++コードを持っています。上記の例では

#define PAR1 <PAR1> 
#define PAR2 <PAR2> 
//other parameters, function declaration, tables and so on... 

、およびすべての可能な他の人がすることによって導出されています。このような数字は、私はテンプレートを持っているの更なるコードを生成するために使用する必要があり、非常に簡単な例として、テンプレートのようなものとして見ることができます上記のC++コード。

あなたの意見では、パラメータ置換を達成するための良いアプローチは何でしょうか?

私は2つの解決法を考えていましたが、どちらが一番良いか分かりません: 1.与えられたパラメータの文字列置換のためにいくつかのPythonスクリプトを書くことができました。いったんパラメータが導出されると、C++アプリケーションで呼び出されます。 2.テンプレートファイルのストリームを読み込み、置換するパラメータの位置を探し、置換します。

最初の解決策は、C++アプリケーションからpythonsスクリプトを呼び出す必要があり、それを行う方法がわかりません。私はいくつかの解決策を見てきました。正直言って、です。

第2の解決策は、私の特定のケースでは少し痛みが伴うC++ファイル操作ですか?

私は自分の目標を達成する最も簡単な方法を提案しています。

Thxを

アップデート:私は簡単な例を掲載することにより、もう少し具体的にしようとしています。いくつかによって導出され

//header_template.h 
#ifndef HEADER_H 
#define HEADER_H 
#include <stdio.h> 

#define A <A> 
#define B <B> 
#define C <C> 

void func1(); 
void func2(); 
void func3(); 

#endif 

ソースファイル //src.c の#include "がheader.h"

void func1() { 
    int i, my_array1[A]; 
    for(i = 0; i < A; i++) { 
    my_array1[i] = do_something(i); 
    } 
    //other processing; 
} 

void func2() { 
    int i, j, my_matrix[A][B]; 
    for(i = 0; i < A; i++) { 
    for(j = 0; j < B; j++) { 
     my_matrix[i][j] = do_something_2(i,j); 
    } 
    } 
} 

void func3() { 
    int i; 
    int my_array[A + B + C]; 
    for(i = 0; i < A + B + C; i++) { 
    my_array[i] = do_something_else(i); 
    } 
} 

パラメータA, B, C:可能なテンプレートは、非常に最小限、以下の可能性コード生成に先立つ他の処理操作は、私が達成したいものは次のようなものです:

私の質問です:Pythonを使用してテキストの置換を行うことは非常に簡単ですが、C++では簡単ではありません。パラメータA、B、Cの処理はC++で実装されたものによって行われますが、私はC++を使用していたという事実を考慮して、そのようなプログラムを拡張する必要があります。そのようなスクリプトをC++プログラムで呼び出すか、C++で関数を実装するだけでよいでしょうか?

私が作った例は、本当のことですが、私が扱っている実際のコードですが、私は大規模に投稿していますので、私が求めているのはあなたがこのような場合に行うことです。

+0

例えばのごみは、12348794684 user8469759

+0

と置き換えることができます。ここには他のものと置き換えられるものがあるCコードがあります。私は基本的にパラメトリックコードを持っています。たとえば、そのようなパラメータは、例えばの代わりにそのファイルに書き込まれていれば、別の場所で派生されなければなりません。おそらく、このようなパラメータは配列の大きさなどを指定します。私は例えばマクロ定義として割り当てられる30のパラメータを持つソースを持っています。私は "コスチュームファイル"とは何を意味するのか分かりません。 – user8469759

+0

[that](http://ideone.com/KaqG3Y)のようなものが欲しいですか?あるいは、コードを置き換えて(ala 'configure.in')(あるいは何らかの' gcc -E'をインクルード部分なしで)新しいファイルを本当に望みますか? – Jarod42

答えて

1

私はPython愛好家ですが、私はこれをC++内にとどめておくべきだと考えています(あなたはすでにかなりの量のC++コードを持っているようだから)、Boostのようなまともなライブラリを使用してください。あなたはCythonをブリッジとして使うことを検討することができますが、私の見積もりはそれが過度なものになることです。

関連する問題