O C2H não suporta a geração de aceleradores a partir de arquivos C.
Há um work-around que permitirá que você ligue para o seu (s) acelerador(s) a partir de um programa C que envolve mover as funções que você deseja acelerar de um arquivo de origem C para um arquivo de origem C. Quando suas funções estão em um arquivo de origem C, o compilador C2H pode efetivamente "vê-las" e convertê-las em aceleradores de hardware.
Há algumas etapas adicionais necessárias para misturar funções C e C (e arquivos).
A cadeia de ferramentas GNU suporta a chamada de funções C de programas C (e vice-versa) por meio de uma metodologia bem definida de afirmação explícita. A maneira como isso funciona é que, a partir do seu programa C, você diz ao compilador quais funções devem ser chamadas como funções C , em vez de C . Esta operação é feita por meio do uso da sintaxe "C" do extern dentro do arquivo de origem C.
Alguns exemplos da sintaxe "C" do extern em ação são os seguintes:
- Chamando a função C do programa C
Configuração: Você tem uma barra de vazio de função (void), que vive no arquivo de fonte C "bar.c" que você deseja chamar a partir do arquivo de origem C "foo.cpp".
Solução: adicione isso ao topo de "foo.cpp"-
externar "C" void foo(void);
- Chamando funções C do programa C
Configuração: uma coleção de funções que vive no arquivo de origem C "bar.c" que você deseja chamar a partir do arquivo de origem C "foo.cpp".
Solução: basta adicionar chaves ao redor do grupo de funções no topo da instrução de externação em "foo.cpp"-
externação "C" {
void foo (vazio);
int foo2 (número int);
int foo3 (int número1, int número2);
}
- Chamando um cabeçalho C de um programa C
Configuração: você tem toda uma coleção de funções C (ou uma biblioteca) em um arquivo chamado "bar.c" que você deseja chamar do seu programa C "foo.c", e você realmente não deseja listá-las individualmente através do procedimento nº 2 (acima). Você tem um arquivo de cabeçalho para "bar.c" chamado "bar.h" que declara a interface às funções.
Solução: a instrução extern também funciona para arquivos de cabeçalho... No arquivo "foo.cpp", use a instrução extern para adicionar o arquivo do cabeçalho-
externação "C" {
#include "bar.h"
}
Qual metodologia é a melhor para usar com C2H? When usando o compilador C2H, é recomendável que um usuário "isole" a função de aceleração em seu próprio arquivo, portanto, usar o primeiro exemplo é a melhor abordagem para acelerar funções com o compilador C2H.