私はメルセンヌツイスター乱数ジェネレータ用の単純なラッパーを用意しています。目的は、ジェネレータによって返された(0と1の間の)数を、引数で定義された制限(beginとend)の間に拡大することです。乱数ジェネレータラッパー(C++)のインライン動作を妨げる
だから私の機能は、私はgenrand_real2()関数の実装は重要ですが、私が間違っている場合、それは問題は関数がないですhere
を見つけることができるとは思わない
inline float xlRandomFloat(float begin, float end) {return (begin+((end-begin)*genrand_real2()));}
です翻訳結果を返さない。
xlRandomFloat(5,10)を呼び出すと、0と5の間の値が返されます。
私はGDBでデバッグ、および印刷機能を使用する場合、それが正しい結果を示しています。デバッグ、それからまっすぐに飛び込んだとき だから、私は
inline float xlRandomFloat(float begin, float end) {
float ret;
ret=(((end-begin)*genrand_real2()));
ret+=begin;
return ret;};
を何が起こるかを見るために行に物事を分離してみました最初の行をgenrand_real2()関数に置き換え、他のすべてをすべてスキップしました。それは本当に混乱していました。インライン展開と関係があります。 この.hppファイルから.cppにファイルを移動し、インラインキーワードを削除して、すべて正常に動作します。
しかし、なぜこの現象が発生し、この機能をインライン化することができますか?また、これが適切かどうかは確かではありませんが、ソースに変更を加えたときに、Make compilationは何もする必要がないと言います。通常、私はmakeがソースの変更を受け取り、それに応じて再構築することを期待しているので、これは珍しいことです。
アイデア
おかげ
Zenna
ありがとうございました あなたは正しいです。私はcodeblocksで構築し、正しく動作します。現時点では、私は以下の構造を有する: すべて:$(SOURCES)$(実行) $(実行):$(OBJECTS) $(CC)$(LDFLAGS)$(OBJECTS)-o $ @ .cpp.o: $(CFLAGS)$ <-o $ @ あなたが言ったように、ヘッダーの依存関係を含めるようにしようとしていますが、依存関係はMakeが再コンパイルするようにヘッダーが変更されていますが、すべてを最初から再構築すれば、どのように違いが生まれますか? – zenna