C2H は C ファイルからのアクセラレーターの生成をサポートしていません。
高速化したい関数を C ソースファイルから C ソースファイルに移動する C プログラムからアクセラレーターを呼び出す回避策があります。 C ソースファイルに関数が含まれると、C2H コンパイラーは効果的に「見る」とハードウェア・アクセラレーターに変換することができます。
C と C の機能 (およびファイル) の混在に必要な追加手順があります。
GNU ツールチェーンは、明確に定義された法を用いて、C プログラムからの C 関数の呼び出し (およびその逆) をサポートします。 これは、C プログラムから、C 関数ではなくC関数として呼び出すべき関数をコンパイラーに指示することです。 この操作は、C ソースファイル内でextern "C"構文を使用して実行されます。
実際の extern "C" 構文の例は次のとおりです。
- C プログラムから C 関数を呼び出す
セットアップ: 関数 void bar (void)があり、C ソースファイル "bar.c" に存在し、C ソースファイル "http.cpp" から呼び出す必要があります。
解決方法: これを「http:/」の先頭に追加します。
extern "C"void(void);
- C プログラムから C 関数を呼び出す
セットアップ: C ソースファイル "bar.c" に存在する関数のコレクションです。C ソースファイル "http:c"から呼び出す必要があります。
解決方法: "http:".cpp"の extern ステートメントの上部にある関数のグループの周辺に卉を追加するだけです。
extern "C" {
void(void);
int int- 2 (int ナンバー);
int int int3 (int ナンバー 1、int ナンバー 2);
}
- C プログラムから C ヘッダーを呼び出す
セットアップ:C プログラム"http.c"から呼び出したい「bar.c」というファイルに C 関数 (またはライブラリー) の全コレクションがあり、実際には手順 #2 (上記) を通じて個別にリストしたくありません。 「bar.c」には「bar.h」というヘッダーファイルがあり、関数へのインターフェイスを定義しています。
解決方法: extern ステートメントはヘッダーファイルでも機能します...ファイル「jp.cpp」では、extern ステートメントを使用してヘッダーファイルを追加します-
extern "C" {
「bar.h」を#include
}
C2H で使用するのに最適な手法はどれですか?C2H コンパイラーを使用する場合、ユーザーはアクセラレーションの関数を独自のファイルに「分離」することを推奨します。最初の例を使用することは、C2H コンパイラーで関数を高速化するための最良のアプローチです。