簡體   English   中英

適用於gcc 4.8的任何正則表達式庫

[英]Any Regex Library for gcc 4.8

我需要在應用程序中使用Regex。 我正在使用Boost(Regex),但gcc 4.9已支持。 類似地,標准Regex庫與單一gcc版本> = 4.9兼容。 是否有任何與gcc 4.8.5兼容的c ++ Regex庫。 注意:我無法更新gcc版本

在使用std::shared_ptr的多線程程序中,gcc 4.9 vs gcc 6.3(從Jessie升級到Debian Stretch后)遇到了相同的問題。 問題是gcc 4.9不支持std::atomic_load ,這是多線程的問題。

因此,解決方案很簡單:由於boost和std幾乎共享同一接口,因此您可以創建一個檢測編譯器版本的頭文件。 如果它是4.9或更高版本,請使用std regex,否則,請使用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

在需要正則表達式的地方,使用此文件,編譯器將自動為您完成所有選擇。 並使用您在那里創建的新定義來調用正則表達式函數和對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM