Mon problème est que lorsque je veux faire une bibliothèque téléchargée, je reçois quelques erreurs de compilation bizarres de GCC et le code que le compilateur demande de corriger semble juste être juste.Erreur de compilation GCC: la déclaration de 'strlen' doit être disponible
Les erreurs sont comme ceci:
Catalogue.h:96: error: there are no arguments to ‘strlen’ that depend on a template parameter, so a declaration of ‘strlen’ must be available
Voici le code autour de la ligne 96:
GaCatalogueEntry(const char* name, T* data)
{
if(name)
{
_nameLength = (int)strlen(name); // LINE 96
// copy name
_name = new char[ _nameLength + 1 ];
strcpy(_name, name); // LINE 100: similar error
_data = data;
return;
}
_name = NULL;
_nameLength = 0;
_data = NULL;
}
Que puis-je faire pour corriger ces erreurs de compilation?
Il semble que vous ayez un ensemble de globaux dont les noms correspondent à '_ [a-z]. *', Ces noms sont réservés à l'implémentation. ('_ [a-z]. *' est OK pour les noms non-globaux tels que les variables locales et les membres de la classe) – MSalters
Je ne pense pas qu'ils soient globaux - mais plutôt des variables membres. Je suppose que GaCatalogueEntry est une fonction membre dans une classe modélisée. Mais vous avez raison, il est dangereux d'avoir une convention de nommage qui implique des préfixes de soulignement. Pour les variables membres, il est préférable d'utiliser le préfixe m_ ou le suffixe _. –