boost/regex/v4/regex_workaround.hpp:199:37:错误:'sizeInBytes'未在此范围内声明



当我使用 boost 正则表达式编译程序时,出现编译错误如下:

在从/usr/local/include/boost/regex/v4/regex.hpp:32:0 包含的文件中,             来自/usr/local/include/boost/regex.hpp:31,             来自ProcessAffinityManager.cpp:38:/usr/local/include/boost/regex/v4/regex_workaround.hpp: 在函数 'size_t boost::re_detail::strcpy(char*, const char*)':/usr/local/include/boost/regex/v4/regex_workaround.hpp:199:37:错误:未在此范围内声明"sizeInBytes"

但是当我检查源文件regex_workaround.hpp时,sizeInBytes是一个参数,错误不应该在这里。

我同意评论员的观点,需要更多信息。

但是,我在使用 minGW 4.8.1 从事的项目中遇到了完全相同的问题经过一番调查,我发现有人在我们的项目中添加了宏黑客:

#define strcpy_s(A,B,C) strcpy(A,C)

我猜这个想法是解决VS和MinGW之间的兼容性问题。VS 定义了许多 C 字符串函数的"安全"版本,例如 strcpy_s(A,B,C)。在Windows上编译时,许多库都使用这些版本的函数,但是对于旧版本的VS和MinGW来说,它们缺失

了。

Boost::regex 通过尝试为可能错过它的环境定义strcpy_s来解决此问题。它与试图强迫strcpy_s调用使用 strcpy 的丑陋黑客相冲突

如果您的问题像我一样,解决方案是找到谁添加了strcpy_s黑客,然后转向提供此类功能的解决方案

最新更新