androidndk上的嵌套函数

androidndk上的嵌套函数,android,gcc,android-ndk,nested-function,Android,Gcc,Android Ndk,Nested Function,有没有办法在Android NDK上使用嵌套函数?这应该是可能的,因为NDK使用gcc,对吗 我尝试在main中定义一个函数,但编译器根本无法识别它。 这是错误 错误:此处不允许在“{”标记之前使用函数定义 错误:输入结束时应为“}”,是的,应该可以。您可能需要在gcc调用中添加-fnested functions标志。我不太清楚。但就NDK使用的armgcc编译器而言,嵌套函数可能会被破坏——我的最佳猜测是,嵌套函数可能会在NDK工具集中被禁用。无论如何-嵌套函数是GCC扩展,因此如果您希望代

有没有办法在Android NDK上使用嵌套函数?这应该是可能的,因为NDK使用gcc,对吗

我尝试在main中定义一个函数,但编译器根本无法识别它。 这是错误

错误:此处不允许在“{”标记之前使用函数定义
错误:输入结束时应为“}”,是的,应该可以。您可能需要在gcc调用中添加-fnested functions标志。

我不太清楚。但就NDK使用的
arm
gcc编译器而言,嵌套函数可能会被破坏——我的最佳猜测是,嵌套函数可能会在NDK工具集中被禁用。无论如何-嵌套函数是GCC扩展,因此如果您希望代码具有可移植性,最好不要使用GCC扩展,而是使用C89/C90兼容的代码。

嵌套函数示例,其中的
foo()
包含
square()
,编译和运行良好(在Tegra 3上)。我使用NDKR8Android工具链(与android cmake一起使用,如果这有什么区别的话,不应该如此)。如果您使用的是旧版本,也许您应该尝试使用r8?

嵌套函数需要一个可执行堆栈,这在Android中是默认禁用的

我花了难以置信的时间才弄明白——但你需要在你的CFLAGS中添加以下内容:

-z execstack-Wa,--execstack


祝你一切顺利

问题不清楚。请清楚地说明您正在尝试做什么,如果失败,也请放入日志。您已经尝试了什么?您是否尝试过NDK的任何示例项目?从一个示例项目的方法甚至main()中获取一些代码并嵌套起来,看看会发生什么,应该是相对容易的…请也看看这个线程:我尝试将-fnested函数添加到本地\u CFLAGS中,但编译器似乎不识别这个标志。抛出错误:无法识别的命令行选项“-fnested functions”万一有人想知道,我用functor替换了它们。