C2H ne prend pas en charge la génération d’accélérateurs à partir de fichiers C.
Il existe une procédure contournable qui vous permettra d’appeler votre accélérateur à partir d’un programme C qui implique de déplacer les fonctions que vous souhaitez accélérer d’un fichier source C à un fichier source C. Une fois que vos fonctions se trouvent dans un fichier C source, le compilateur C2H peut efficacement les « voir » et les convertir en accélérateurs matériels.
Certaines étapes supplémentaires sont nécessaires pour le mélange des fonctions C et C (et fichiers).
La chaîne d’outils GNU prend en charge l’appel des fonctions C des programmes C (et vice versa) par le biais d’une méthodologie bien définie de l’extibilité explicite. La façon dont cela fonctionne est que, dans votre programme C, vous indiquez au compilateur quelles fonctions doivent être appelées fonctions C au lieu de C . Cette opération est réalisée grâce à l’utilisation de la syntaxe « C » de l’extern dans le fichier source C.
Voici quelques exemples de la syntaxe « C » de l’écran d’écran extern en action :
- Appel de la fonction C du programme C
Configuration : vous avez une barre (non nulle)fonction qui vit dans le fichier source C « bar.c » que vous souhaitez appeler à partir du fichier source C « foo.cpp ».
Solution : ajoutez-le au sommet de « foo.cpp » -
« C » vide foo(void) ;
- Appel des fonctions C du programme C
Configuration : un ensemble de fonctions qui vit dans le fichier C source « bar.c » que vous souhaitez appeler à partir du fichier C source « foo.cpp ».
Solution : il suffit d’ajouter des amorciateurs autour du groupe de fonctions en haut de la déclaration de l’extern dans « foo.cpp » -
extern « C » {
foo(non nul) ;
int foo2 (nombre int) ;
int foo3 (int numéro1, int numéro2) ;
}
- Appel d’un en-tête C dans un programme C
Configuration : vous avez toute une collection de fonctions C (ou une bibliothèque) dans un fichier appelé « bar.c » que vous souhaitez appeler à partir de votre programme C « foo.c », et vous ne voulez vraiment pas les lister individuellement par la procédure #2 (ci-dessus). Vous disposez d’un fichier en-tête de « bar.c » appelé « bar.h » qui identifie l’interface aux fonctions.
Solution : la déclaration d’extern fonctionne également pour les fichiers en-tête... Dans le fichier « foo.cpp », utilisez la déclaration de l’extern pour ajouter le fichier en-tête-
extern « C » {
#include « bar.h »
}
Quelle méthodologie est la meilleure à utiliser avec C2H ? Avecle compilateur C2H, il est recommandé à l’utilisateur d'« isoler » la fonction d’accélération dans son propre fichier. À l’aide du premier exemple, il est donc recommandé d’accélérer les fonctions avec le compilateur C2H.