Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用GCC MinGW时,我的代码不再编译_Android_C++_Gcc_Mingw - Fatal编程技术网

Android 使用GCC MinGW时,我的代码不再编译

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+

我使用Visual Studio 2015编写了一个小程序。它可以正确编译和运行。我现在正试图使用gccmingw编译器运行相同的程序,以便将其移植到Android。 然而,编译器一直在抱怨。以下是它不断提出的问题:

     inline auto currentTime()
     {
         return std::chrono::high_resolution_clock::now();
     }
编译器抱怨:

错误:
自动
返回,不带尾随返回类型;推断收益 类型是一个C++14扩展

编译器还抱怨这一行

      return std::chrono::high_resolution_clock::now();
错误:从返回的
时间点类型的值没有可行的转换
(aka
time\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
,则应该是返回类型。