作者:无极圈晨曦 | 来源:互联网 | 2023-05-23 16:53
我很好奇是否有办法使用@,$或?在C函数或变量名称中.我知道链接器允许它们(因为C++名称错误).
是否有任何类型的转义码可以允许这个(我不在乎它看起来多么丑陋)?或者,在标准C中,这完全不可能吗?
1> Basile Stary..:
在纯标准C中是不可能的.
但是如果使用GCC(或可能是Clang/LLVM),您可以使用 $
标识符,并且可以使用标签设置链接器名称asm
你也许也可以用ld脚本玩GNU ld技巧.
2> R....:
标准C不允许任何这些(并且它不能真正允许,?
因为它是一个运算符,因此是一个单独的标记).GCC(可能是兼容的编译器)允许$
但不允许其他编译器.但是,您可以使用GNU C(GCC)扩展来声明引用不同基础符号名称的外部链接名称; 这可能会达到你想要的效果,例如,如果你试图引用C++符号.我相信语法就像添加__asm__("symbol_name")
到函数声明的末尾.大多数Linux系统上的glibc头文件中都有一些例子.
或者,如果有dlsym
,您可以使用它在运行时查找名称.