我很好奇是否有办法使用@,$或?在C函数或变量名称中。我知道链接器允许它们(因为C ++名称错误)。
是否有任何类型的转义码可以允许这个(我不在乎它看起来多么丑陋)?或者,在标准C中,这完全不可能吗?
答案 0 :(得分:6)
在纯粹的标准C中是不可能的。
但是如果使用GCC(或可能是Clang/LLVM),您可以拥有$
in identifiers,并且可以使用asm
labels设置链接器名称
您也许可以使用GNU ld播放ld scripts个技巧。
答案 1 :(得分:5)
标准C不允许任何这些(并且它不能真正允许?
,因为它是一个运算符,因此是一个单独的标记)。 GCC(以及可能兼容的编译器)允许$
但不允许其他人。但是,您可以使用GNU C(GCC)扩展来声明引用不同基础符号名称的外部链接名称;这可能会实现你想要的,例如如果您正在尝试引用C ++符号。我相信语法就像在函数声明的末尾添加__asm__("symbol_name")
。在大多数Linux系统上的glibc头文件中都有一些例子。
或者,如果您有dlsym
,则可以使用它在运行时查找名称。