Joh*_*itb 26
你不能.它内置于编译器中,允许您重载函数并在不同的类和类似的东西中具有相同名称的函数.但是你可以编写像C函数一样被破坏的函数.那些可以从C代码调用.但那些不能重载,不能通过"普通"C++函数指针调用:
extern "C" void foo() {
}
Run Code Online (Sandbox Code Playgroud)
上面的函数将像编译器的C函数一样被破坏.这可能包括对名称没有任何改变,或者某些改变,比如它前面的前导"_".
bef*_*fzz 13
另一种方式:
控制汇编代码中使用的名称(gcc规范)
您可以通过在声明符后面编写asm(或__asm__)关键字来指定要在C函数或变量的汇编代码中使用的名称.您可以确保所选的汇编器名称与任何其他汇编器符号或引用寄存器不冲突.
要指定函数的汇编程序名称,请在函数定义之前为函数编写声明,并将asm放在那里,如下所示:
int func () asm ("MYFUNC");
int func ()
{
Run Code Online (Sandbox Code Playgroud)
g++将编译它,nm -D输出将是
0000000000001e02 T MYFUNC
Run Code Online (Sandbox Code Playgroud)
代替
0000000000001e02 T _Z4funcv
Run Code Online (Sandbox Code Playgroud)
在g ++ 4.9.2上测试
| 归档时间: |
|
| 查看次数: |
9356 次 |
| 最近记录: |