3

ランタイム速度の理由から、プロジェクト (プロジェクトのソース コード ディレクトリ内のファイルはどこにありますか)#include "randombytes.cpp"の代わりに使用することをお勧めしますか? 次のようになります。randombytes.hrandombytes.cpprandombytes.cpp

#ifndef RANDOMBYTES_INCLUDED
#define RANDOMBYTES_INCLUDED

/* include native headers here */

unsigned char *fetch_random_bytes(int amount);

/* include other parts of my project here if necessary */

unsigned char *fetch_random_bytes(int amount) {
  // do stuff
}

#endif

これは、相互に要求するファイルなどでも機能するはずですよね? これがうまくいかない場合、または最適化のメリットが得られない場合を考えてみてください。

4

2 に答える 2

7

このプラクティスは「Unity ビルド」(Google で検索) と呼ばれ、単純なプロジェクト以外では一般的にはお勧めできません。小さなエラーを修正します。

実行時のパフォーマンスに関しては、速度の違いは、リンク時の最適化をオンにしてコンパイルした場合と大差ありません。

于 2012-04-21T15:26:39.170 に答える
2

はい、これは一般的に「ユニティビルド」と呼ばれる手法であり、インライン化プロセスに役立ちます(コンパイラが十分にスマートな場合)。ただし、内部リンケージを持つ関数が重複している場合 (つまり、.cpp にのみ存在し、.h で宣言されていない関数)、デバッグが困難なコンパイル エラーが発生する可能性があるため、これには欠点がありますが、これは回避できます。慎重かつ一貫した命名規則で

これに関するいくつかの読書:

Unityビルドのメリット・デメリットは?

http://www.gmixer.com/archives/46

于 2012-04-21T15:27:16.563 に答える