使用@$? 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
,您可以使用它在运行时查找名称。
我很好奇是否有任何方法可以使用 @、$ 或 ?在 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
,您可以使用它在运行时查找名称。