2016-06-27 8 views
0

私のファイルでは、特定の条件が満たされている場合にのみファイルをインクルードしたいと考えています。条件が満たされた場合にcppファイルをインクルードする

目的としたコードは、私は本当にこの問題を解決する方法がわからない

#if condition1 
    #include file1.cpp 
#endif 
#if condition2 
    #include file2.cpp 
#endif 

のようなものです。 #includeはプリプロセッサ文であり、if条件はプログラム内で計算する必要があります。上記のコードでは、どちらの条件も満たされていないため、ファイルはロードされません。私が

に変更した場合
if condition1{ 
    #include file1.cpp 
... 

if文に関係なく、プリプロセッサが#include文を見つけたので、すべてのファイルが含まれます。

これまでのところ、私は3番目の可能性を見つけていません。

+2

どのような状態をテストしたいですか?最初のコードはコンパイル時に条件が成立する限り有効です。実行時条件をテストする場合は、プリプロセッサでは実行できないため、別の方法でコードを設計する必要があります。 – Krapow

+0

#ifdef myFlag #include #else #include #endifはこのトリックを行う必要があります。なぜ.cppファイルを含めるのですか? – paweldac

+0

私はプリプロセッサではできないと感じていました。 .cppはデータファイルです。コードのいくつかの結果に応じて、正しいものが読み込まれます。フォーマットは、コードに非常に簡単に含めることができるように設計されています。 – Glostas

答えて

0

一般的な答えは、あなたが望むようにしたいと言うことをすることができないということです。しかし、あなたの目標に応じて、それを達成する方法があるかもしれません。

1)異なるcppファイルを含む異なるバージョンのターゲットを作成することができます。ほとんどのC++環境には、コマンドラインで#defineの値を渡すオプションがあるので、そのようにしてターゲット名を渡すことができます。コンパイル時に#if指示文を使用して、ビルドしているターゲットをテストすることができます。

2)別々のバイナリとして異なるcppファイルをコンパイルしてリンクし、実行時にプログラムに動的にロードすることができます。私はこれがC#の.NETのような環境ではかなり簡単だと思いますが、おそらくC++プロジェクトでもう少し作業します。あなたの環境ややりたいことにもよります。

関連する問題