Android 使用GCC MinGW时,我的代码不再编译
我使用Visual Studio 2015编写了一个小程序。它可以正确编译和运行。我现在正试图使用gccmingw编译器运行相同的程序,以便将其移植到Android。 然而,编译器一直在抱怨。以下是它不断提出的问题:Android 使用GCC MinGW时,我的代码不再编译,android,c++,gcc,mingw,Android,C++,Gcc,Mingw,我使用Visual Studio 2015编写了一个小程序。它可以正确编译和运行。我现在正试图使用gccmingw编译器运行相同的程序,以便将其移植到Android。 然而,编译器一直在抱怨。以下是它不断提出的问题: inline auto currentTime() { return std::chrono::high_resolution_clock::now(); } 编译器抱怨: 错误:自动返回,不带尾随返回类型;推断收益 类型是一个C+
inline auto currentTime()
{
return std::chrono::high_resolution_clock::now();
}
编译器抱怨:
错误:自动
返回,不带尾随返回类型;推断收益
类型是一个C++14扩展
编译器还抱怨这一行
return std::chrono::high_resolution_clock::now();
错误:从返回的时间点类型的值没有可行的转换
(akatime\u point>
)到函数返回类型int
有没有什么方法可以绕过这些问题而不必重写代码的那一部分?您应该找到::now()的类型;
然后用您找到的类型替换auto
inline int currentTime()
{
return std::chrono::high_resolution_clock::now();
}
像这样^^在我的Android.mk应用程序中\u STL:=c++\u共享。这意味着NDK被设置为使用LLVM C++运行库共享库。此运行时是LLVM libc++的Anroid端口。默认情况下,此运行时使用-std=c++11编译。我设置了这个->本地标志:=-std=c++14。在这之后,上面引用的代码被编译。你打开C++14了吗?我在application.mk中使用APP_STL:=C++\u static来包含我的cplusplus标准库。我不确定Android NDK的捆绑GCC是否支持C++14(现在),看看,这是Android NDK的一个分支,支持C++14 Crystax NDK未经测试,也不支持Windows作者明确表示,无需重写我的部分代码即可解决这些问题。因此,我将auto更改为int,该错误已得到解决,但第二个错误仍然存在,如果仍然存在问题,问题在于std::chrono::high_resolution_clock::now()
不返回int
(不知道为什么答案会这样),而是返回std::chrono::high\u resolution\u clock::time\u point
,这就是auto
在代码中的实际含义,因此如果不能使用auto
,则应该是返回类型。