警告:禁用犰狳中的 C++11 功能
WARNING: disabled use of C++11 features in Armadillo
我在Windows和cygwin下使用犰狳。
尽管犰狳建议使用Mingw,Boost建议使用Mingw,但Boost建议使用Mingw。所以,当我编译时,我收到了这样的警告。有没有办法在不破解犰狳代码的情况下修复此警告?
源代码中的警告位置在这里。
主.cpp
#include <armadillo>
int main()
{
arma::mat A(5,10);
A.ones();
return 0;
}
编译:
g++ main.cpp -std=c++11
警告:
E:testtemp>make
g++ main.cpp -std=c++11 -fdiagnostics-color=always
In file included from /usr/include/armadillo:50:0,
from main.cpp:1:
/usr/include/armadillo_bits/compiler_setup.hpp:72:123: note: #pragma message: WA
RNING: disabled use of C++11 features in Armadillo, due to incomplete support fo
r C++11 by Cygwin
#pragma message ("WARNING: disabled use of C++11 features in Armadillo, due
to incomplete support for C++11 by Cygwin")
^
它可能是犰狳最近添加的,但以下编译时标志似乎可以解决问题:
g++ main.cpp -std=c++11 -DARMA_DONT_PRINT_CXX11_WARNING
我没有使用犰狳编程。但从犰狳源代码@https://github.com/conradsnicta/armadillo-code/来看,似乎对于所有版本的犰狳(6.1-6.5),C++11 对 Cygwin 都是禁用的。
最新的Cygwin包括GCC-5.2和Cygwin-gcc-4.9.2(以及Mingw @Cygwin),恕我直言,它们应该固有地支持最新的C++11功能。
最好的选择是删除代码块@compiler_Setup.hpp
#if defined(__CYGWIN__)
#if defined(ARMA_USE_CXX11)
#undef ARMA_USE_CXX11
#undef ARMA_USE_EXTERN_CXX11_RNG
#pragma message ("WARNING: disabled use of C++11 features in Armadillo, due to incomplete support for C++11 by Cygwin")
#endif
#endif
如果这不是一个选项,您必须重新定义ARMA_USE_CXX11
并ARMA_USE_EXTERN_CXX11_RNG
。
#if defined(__GNUC__)
#if (__GNUC__ > 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ > 8)))
#define ARMA_USE_CXX11
#define ARMA_USE_EXTERN_CXX11_RNG
#endif
#endif
您可以在代码#include <armadillo>
后at@RcppArmadilloForward.h 定义它
犰狳库借助Cygwin编译器中的预定义宏来识别编译器名称。在包含库之前,可以在代码中#undef
__CYGWIN__
宏。如果未定义编译器宏,则可能会出现问题,因为在旨在使用每个编译器可用的最佳性能技巧的高性能代码中,此宏可能是必需
相关文章:
- 如何使用lock_guard在c++11中实现scoped_lock功能
- 如何获得CMake Tools以在Visual Studio Code中编译具有C++11(或更高版本)功能的程序?
- C++11 功能 std::map::at 编译旧版本的C++
- C++03 和 C++11 之间的c_str功能规范的差异
- =删除用户定义的成员功能,除了构造函数,分配运算符C 11
- 如何实现声明功能-C 11,编译时间
- C 11:功能表指针,lambdas
- C 11功能参数
- 我如何知道我的编译器是否支持XXXXC++11功能
- 检查是否使用了 C++11 功能
- 警告:禁用犰狳中的 C++11 功能
- 如果我使用c++11功能编译一个文件,同时将其链接到一个没有c++11编译器选项编译的库,会有什么问题吗
- 编译器选项不适用于无序集C++11功能
- 正在禁用VS2012上的C++11功能
- 如何在不使用C++11功能的情况下初始化类中的数组
- 分割故障:11 - C功能
- 禁用 Visual Studio2013 中的 c++11 功能
- 如何检测我的源代码中使用了哪些 C++11 功能
- 有没有一个网页,微软保存了在最新的VC++中实现的C++11功能的最新列表
- 是 std::max_element 是 C++11 x 功能