J'ai un projet C++ 11 et j'ai ajouté quelques strcpy_s
appels de méthode. Cela fonctionne sur Windows, mais lors de la compilation sur gcc, il y a une erreur indiquant que strcpy_s
le symbole est introuvable.
J'ai ajouté la ligne
#define __STDC_WANT_LIB_EXT1__ 1
au code, en vain.
GCC (ou plutôt glibc) ne prend pas en charge strcpy_s()
et ses amis. Pour quelques idées sur où trouver une bibliothèque qui les prend en charge, voir ici: Existe-t-il des implémentations gratuites de strcpy_s et/ou TR24731-1?
strcpy_s
et les amis ne font pas encore partie de C++. Il semble que C++ 17 les aura, mais pour l'instant, les fournir dépend des implémentations. Il semble que la glibc ne fonctionne pas.
En fait, selon la cppreference , __STDC_WANT_LIB_EXT1__
ne fonctionnera que si __STDC_LIB_EXT1__
est défini. Sur mon Arch Linux, ce n'est pas le cas.
#ifdef __STDC_LIB_EXT1__
constexpr bool can_have_strcpy_s = true;
#else
constexpr bool can_have_strcpy_s = false;
#endif
Vous pouvez utiliser strncpy
. Avec un peu de soin, cela peut être sûr.