Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.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
C++ NDK在';之前应为不合格id^';代币_C++_Android Ndk_Block - Fatal编程技术网

C++ NDK在';之前应为不合格id^';代币

C++ NDK在';之前应为不合格id^';代币,c++,android-ndk,block,C++,Android Ndk,Block,我对NDK和JAVA都是新手,所以请耐心听我说。 我有C++文件,我想通过NDK构建。我的build.gradle文件中有以下内容: defaultConfig { applicationId "com.example.blabla.blabla" minSdkVersion 21 targetSdkVersion 22 versionCode 1 versionName "1.0" ndk {

我对NDK和JAVA都是新手,所以请耐心听我说。 我有C++文件,我想通过NDK构建。我的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。 块是苹果的C扩展。如果您想在Android中使用它们,您应该重写代码以使用C++11 lambdas(由NDK的gcc和clang支持)或使用Objective-C和Objective-C++支持的地方(包括Objective-C块)。

您从哪里获得此源文件的?如错误所述,
^
字符在该位置无效。我想我已经看到它在“C++ + CLI”中使用,它与托管代码有关,但不是在适当的标准C++中。@ ZZEZELZZ我写了代码,我需要在快速的谷歌搜索中使用我的应用程序中的块,它看起来是一个特定的苹果扩展,而不是标准C++的一部分。你能详细说明一下你需要它做什么吗?@zenzelezz使用block不是强制性的,但这会使我的代码整洁。我有多个C++文件中的块,你说你有其他C++文件中的块,那些也在Android NDK项目中吗?