使用@ $?C函数/变量中的符号

MiJ*_*Jyn 2 c symbols debug-symbols

我很好奇是否有办法使用@,$或?在C函数或变量名称中.我知道链接器允许它们(因为C++名称错误).

是否有任何类型的转义码可以允许这个(我不在乎它看起来多么丑陋)?或者,在标准C中,这完全不可能吗?

Bas*_*tch 6

在纯标准C中是不可能的.

但是如果使用GCC(或可能是Clang/LLVM),您可以使用 $标识符,并且可以使用标签设置链接器名称asm

你也许也可以用ld脚本GNU ld技巧.


R..*_*R.. 5

标准C不允许任何这些(并且它不能真正允许,?因为它是一个运算符,因此是一个单独的标记).GCC(可能是兼容的编译器)允许$但不允许其他编译器.但是,您可以使用GNU C(GCC)扩展来声明引用不同基础符号名称的外部链接名称; 这可能会达到你想要的效果,例如,如果你试图引用C++符号.我相信语法就像添加__asm__("symbol_name")到函数声明的末尾.大多数Linux系统上的glibc头文件中都有一些例子.

或者,如果有dlsym,您可以使用它在运行时查找名称.