使用@$? C function/variable 中的符号

Use @$? symbols in a C function/variable

我很好奇是否有任何方法可以使用 @、$ 或 ?在 C 函数或变量名中。我知道链接器允许它们(因为 C++ 名称修改)。

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

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

但是如果使用 GCC (or probably Clang/LLVM) you can have $ in identifiers, and you can set the linker name using asm labels

你或许也可以玩 GNU ld tricks with ld scripts.

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

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