C2H không hỗ trợ tạo các bộ tăng tốc từ các tệp C.
Có một công việc xung quanh cho phép bạn gọi (các) bộ tăng tốc của mình từ một chương trình C liên quan đến việc di chuyển các chức năng bạn muốn tăng tốc từ tệp nguồn C sang tệp nguồn C. Khi các chức năng của bạn ở trong tệp nguồn C, trình biên dịch C2H có thể "xem chúng" và chuyển đổi chúng thành bộ tăng tốc phần cứng một cách hiệu quả.
Có một số bước bổ sung cần thiết để trộn các chức năng C và C (và các tập tin).
Chuỗi công cụ GNU hỗ trợ việc gọi các chức năng C từ các chương trình C (và ngược lại) thông qua một phương pháp xác định rõ ràng. Cách thức hoạt động này là, từ chương trình C của bạn, bạn chỉ cho trình biên dịch biết chức năng nào sẽ được gọi là chức năng C thay vì C . Hoạt động này được thực hiện thông qua việc sử dụng cú pháp "C" extern trong tệp nguồn C.
Một số ví dụ về cú pháp "C" extern trong action như sau:
- Gọi cho chức năng C từ chương trình C
Thiết lập: Bạn có một thanh vô hiệu chức năng (void), sống trong tệp nguồn C "bar.c" mà bạn muốn gọi từ tệp nguồn C "foo.cpp".
Giải pháp: Thêm nó vào đầu "foo.cpp" -
extern "C"void foo(void);
- Gọi đến các chức năng C từ chương trình C
Thiết lập: Một tập hợp các chức năng sống trong tệp nguồn C "bar.c" mà bạn muốn gọi từ tệp nguồn C "foo.cpp".
Giải pháp: Đơn giản chỉ cần thêm ni hàm xung quanh nhóm chức năng ở đầu tuyên bố extern trong "foo.cpp" -
extern "C" {
foo void(void);
int foo2(số int);
int foo3 (số int 1, số int 2);
}
- Gọi tiêu đề C từ chương trình C
Thiết lập: Bạn có toàn bộ bộ chức năng C (hoặc thư viện) trong tệp có tên "bar.c" mà bạn muốn gọi từ chương trình C "foo.c" của mình và bạn thực sự không muốn liệt kê chúng riêng lẻ thông qua quy trình #2 (ở trên). Bạn có một tệp tiêu đề cho "bar.c" được gọi là "bar.h" khai báo giao diện của các chức năng.
Giải pháp: Tuyên bố extern cũng hoạt động cho các tệp tiêu đề ... Trong tệp "foo.cpp", sử dụng tuyên bố extern để thêm tệp tiêu đề-
extern "C" {
#include "bar.h"
}
Phương pháp nào tốt nhất để sử dụng với C2H? Khisử dụng trình biên dịch C2H, người dùng nên "cách ly" chức năng để tăng tốc vào tập tin riêng của mình, vì vậy việc sử dụng ví dụ đầu tiên là cách tiếp cận tốt nhất để tăng tốc các chức năng với trình biên dịch C2H.