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.
中搜索 "Replacing symbolic names of C functions"
在函数声明中使用 asm
是 GCC extension (also supported by Clang/LLVM) called asm-label。它正在设置函数的汇编器和链接器已知名称。
顺便说一句,在你的代码中 attribute_hidden
可能是一些 function attribute, probably __attribute__ ((visibility ("hidden")))
的宏
本页内容: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");
中搜索 "Replacing symbolic names of C functions"Calling the function Calc() will create assembler instructions to call the function CALCULATE.
在函数声明中使用 asm
是 GCC extension (also supported by Clang/LLVM) called asm-label。它正在设置函数的汇编器和链接器已知名称。
顺便说一句,在你的代码中 attribute_hidden
可能是一些 function attribute, probably __attribute__ ((visibility ("hidden")))