使用aarch64 linux android clang的ARMv8架构的内联函数交叉编译问题

中庸之道

我有一个关于在 C 代码 (C99) 中使用 inline 关键字的问题。我知道 C99 内联语义与 C++ 或 gnuC 内联规则不同,我已阅读

http://www.greenend.org.uk/rjk/tech/inline.html

外部内联

但是,我就是不能让它工作。

我在 file1.c 中有一个函数定义如下

inline myfunc(arguments)
{

}

这个函数是从 file2.c 中的另一个函数调用的
在那个 file2.c 我尝试使用

extern inline myfunc(arguments);

在从另一个函数调用此函数之前

我仍然不断收到错误 - myfunc 的隐式声明

如果我删除 extern inline 或未定义的引用错误

由于我的代码结构,头文件中不能有 myfunc 函数定义,也不能将其作为静态内联,因为它必须从不同的编译单元调用。

什么是我弄错了?如何修复它。

中庸之道

经过大量阅读,反复试验,我以我正在寻找的方式找到了上述问题的答案 - 使用 C99 规则内联存在于 C 源文件中的 C 函数定义,而不将其放入头文件中。我将属性 always_inline 关键字添加到如下的函数定义和声明中并重新编译,它内联了对该函数的调用。在文件 file1.c 中

__attribute__((always_inline)) void myfunc(arguments)
{
//... function definition
}

在有声明的 file1.h 中,我将其更改为如下所示

__attribute__((always_inline)) void myfunc(arguments);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在AArch64上执行sqrt函数

来自分类Dev

ARMv8 AARCH64指令中止处理程序?

来自分类Dev

ARMv8 AArch64 SVC保存寄存器

来自分类Dev

gcc; Aarch64; Armv8; 启用加密; -mcpu = cortex-a53 + crypto

来自分类Dev

程序集未知助记符AArch64 ARMv8

来自分类Dev

卤化物是否支持Neon的ARMv8(aarch64)?

来自分类Dev

如何在x64主机上交叉编译AArch64的LLVM / Clang?

来自分类Dev

内联aarch64程序集UMOV源语法

来自分类Dev

用于AARCH64的GHC Haskell编译器

来自分类Dev

了解aarch64汇编函数调用,如何操作堆栈

来自分类常见问题

缺少aarch64-linux-android-strip文件

来自分类Dev

如何在Debian上为armv8 cortex-a53安装aarch64工具链?

来自分类Dev

Linux 4.9 aarch64上的USB CC2531不支持的设备

来自分类Dev

将ARM NEON代码移植到AARCH64,很多问题

来自分类Dev

在ARM(armv7l / arm64 / aarch64)上构建mongo shell 3.2.x-分段错误

来自分类Dev

哪个版本的Android OS支持64位架构

来自分类Dev

当您不关心新通道时,如何在clang / AArch64上使用NEON内在函数将int32x2_t扩展为int32x4_t?

来自分类Dev

使用单个aarch64指令获取余数?

来自分类Dev

如何将现有的deb软件包从64位架构交叉编译到32位架构

来自分类Dev

如何将现有的deb软件包从64位架构交叉编译到32位架构

来自分类Dev

使用__ANDROID_API__预定义在Linux上针对android进行交叉编译失败我的程序

来自分类Dev

AArch64重定位前缀

来自分类Dev

Aarch64什么是后继转发?

来自分类Dev

构建臂/ aarch64 rootfs

来自分类Dev

Android应用程序,如何支持64位架构?

来自分类Dev

使用 ndk arm-linux-androideabi-clang++ 编译器为 android 构建 grpc C++

来自分类Dev

使用O2保留AArch64上的位精确浮点计算

来自分类Dev

使用O2保留AArch64上的位精确浮点计算

来自分类Dev

使用 PC 相关数据源的绝对跳转 (AArch64)

Related 相关文章

  1. 1

    在AArch64上执行sqrt函数

  2. 2

    ARMv8 AARCH64指令中止处理程序?

  3. 3

    ARMv8 AArch64 SVC保存寄存器

  4. 4

    gcc; Aarch64; Armv8; 启用加密; -mcpu = cortex-a53 + crypto

  5. 5

    程序集未知助记符AArch64 ARMv8

  6. 6

    卤化物是否支持Neon的ARMv8(aarch64)?

  7. 7

    如何在x64主机上交叉编译AArch64的LLVM / Clang?

  8. 8

    内联aarch64程序集UMOV源语法

  9. 9

    用于AARCH64的GHC Haskell编译器

  10. 10

    了解aarch64汇编函数调用,如何操作堆栈

  11. 11

    缺少aarch64-linux-android-strip文件

  12. 12

    如何在Debian上为armv8 cortex-a53安装aarch64工具链?

  13. 13

    Linux 4.9 aarch64上的USB CC2531不支持的设备

  14. 14

    将ARM NEON代码移植到AARCH64,很多问题

  15. 15

    在ARM(armv7l / arm64 / aarch64)上构建mongo shell 3.2.x-分段错误

  16. 16

    哪个版本的Android OS支持64位架构

  17. 17

    当您不关心新通道时,如何在clang / AArch64上使用NEON内在函数将int32x2_t扩展为int32x4_t?

  18. 18

    使用单个aarch64指令获取余数?

  19. 19

    如何将现有的deb软件包从64位架构交叉编译到32位架构

  20. 20

    如何将现有的deb软件包从64位架构交叉编译到32位架构

  21. 21

    使用__ANDROID_API__预定义在Linux上针对android进行交叉编译失败我的程序

  22. 22

    AArch64重定位前缀

  23. 23

    Aarch64什么是后继转发?

  24. 24

    构建臂/ aarch64 rootfs

  25. 25

    Android应用程序,如何支持64位架构?

  26. 26

    使用 ndk arm-linux-androideabi-clang++ 编译器为 android 构建 grpc C++

  27. 27

    使用O2保留AArch64上的位精确浮点计算

  28. 28

    使用O2保留AArch64上的位精确浮点计算

  29. 29

    使用 PC 相关数据源的绝对跳转 (AArch64)

热门标签

归档