NDK 在“^”标记之前预期不合格的 ID

NDK Expected unqualified-id before '^' token

我是 NDK 的新手,也是 JAVA 的新手,所以请多多包涵。 我有 c++ 文件,我想通过 NDK build.gradle 构建它。我的 build.gradle 文件中有以下内容:

 defaultConfig {
        applicationId "com.example.blabla.blabla"
        minSdkVersion 21
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        ndk {
            moduleName "test"
            cFlags "-std=c++11 -fexceptions"
            stl "gnustl_shared"
        }
    }

我在 local.properties 中有这一行:

ndk.dir= pathToMyNDK/AndroidStudio/ndk

在我的一个 C++ 文件中,我有一个这样的块定义:

typedef void (^ABCD)(string, string);

以及接受该类型参数的函数:

void generateAlphabetLetters(ABCD alph){}

当我尝试使用 NDK 构建文件时,出现以下无法解决的错误: “^”标记前的预期不合格 ID

正如编译器告诉您的那样,这是一个语法错误。

typedef void (^ABCD)(string, string);

不是有效的 c++。

您有标准 C++ 中的 lambda。

块是 Apple 的 C 扩展。如果你想在 Android 中使用它们,你应该重写代码以使用 C++11 lambdas(由 NDK 的 gcc 和 clang 支持)或使用 CrystaX NDK,其中 Objective-C 和 Objective-C++ 支持(包括 Objective-C 块)。