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

时间:2017-03-23 15:52:16

标签: android c++ gcc mingw

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

     inline auto currentTime()
     {
         return std::chrono::high_resolution_clock::now();
     }

编译器抱怨:

  

错误:auto返回没有尾随返回类型;推断回报   types是C ++ 14扩展。

编译器也抱怨这一行

      return std::chrono::high_resolution_clock::now();
  

错误:类型time_point的返回值没有可行的转换     (又名time_point < std::__ndk1::chrono::steady_clock, duration < long, long ratio < 1LL, 1000000000LL > > >)函数返回类型int

有什么方法可以解决这些问题,而不必重写我的代码部分吗?

2 个答案:

答案 0 :(得分:1)

在我的Android.mk中APP_STL:= c ++ _ shared。这意味着NDK设置为使用LLVM C ++运行时共享库​​。此运行时是LLVM libc ++的Anroid端口。默认情况下,此运行时使用-std = c ++ 11进行编译。我设置了这个 - &gt; LOCAL_CPPFLAGS:= - std = c ++ 14。之后,上面引用的代码编译。

答案 1 :(得分:0)

你应该找出:: now()的类型; 然后用您找到的那种类型替换auto,

inline int currentTime()
{
    return std::chrono::high_resolution_clock::now();
}
像这样^^