C 函数语法

C function syntax

本页内容:http://www.scs.stanford.edu/histar/src/pkg/uclibc/libc/sysdeps/linux/x86_64/sigaction.c

我看到这两行:

extern void restore_rt (void) asm ("__restore_rt") attribute_hidden;
extern void restore (void) asm ("__restore") attribute_hidden;

这是什么语法?是否将 restore_rt 设置为以内联 asm("__restore_rt") 作为主体的函数?

谢谢!

显然这是一种替换 C 函数符号名称的方法...

In order to change the name of a function, you need a prototype declaration, because the compiler will not accept the asm keyword in the function definition:

extern long Calc(void) asm ("CALCULATE");

Calling the function Calc() will create assembler instructions to call the function CALCULATE.

this document

中搜索 "Replacing symbolic names of C functions"

在函数声明中使用 asmGCC extension (also supported by Clang/LLVM) called asm-label。它正在设置函数的汇编器和链接器已知名称。

顺便说一句,在你的代码中 attribute_hidden 可能是一些 function attribute, probably __attribute__ ((visibility ("hidden")))

的宏