J'ai besoin d'utiliser Regex dans mon application. J'utilisais Boost (Regex) mais cela a été supporté par gcc 4.9. De même, la bibliothèque Regex standard est compatible avec la version gcc d'onle> = 4.9. Existe-t-il une bibliothèque Regex C++ compatible avec gcc 4.8.5. Note: Je ne peux pas mettre à jour la version gccToute bibliothèque Regex pour gcc 4.8
1
A
Répondre
0
J'ai eu le même problème avec gcc 4.9 vs gcc 6.3 (après mise à niveau vers Debian extensible de Jessie) dans un programme multithread qui a utilisé std::shared_ptr
. Le problème était que gcc 4.9 ne supportait pas std::atomic_load
, ce qui était un problème pour le multithreading.
Donc, la solution est simple: Puisque boost et std partagent (presque) la même interface, vous pouvez créer un fichier d'en-tête detects la version du compilateur. Si elle est de 4,9 ou plus, utilisez regex std, sinon, utilisez boost regex:
#ifdef __GNUC__
#if __GNUC__ > 4 || \
(__GNUC__ == 4 && (__GNUC_MINOR__ > 9 || \
(__GNUC_MINOR__ == 9 && \
__GNUC_PATCHLEVEL__ > 0))
#include <regex>
#define Regex std::regex
#else
#include <boost/regex.hpp>
#define Regex boost::regex
#endif
#endif
Et où vous avez besoin regex, utilisez ce fichier, et le compilateur fera automatiquement toute la sélection pour vous. Et utilisez les nouvelles définitions que vous créez là-bas pour appeler les fonctions et les objets regex.