我只是想定义一个指向 ac 文件中一行代码的全局标签,然后 bc 文件可以识别该标签。这两个文件链接在一起。问题是 bc 文件无法识别它,因为编译器/链接器认为 ac 文件中的标签是特定于文件的。
我在这里找到了一个类似的问题和答案:Use label in Assembly from C 但我想在 C/C++ 中而不是在 Assembly 中定义一个全局标签。
PS,我没有使用 goto 语句:)
在 GCC 中,您可以通过内联汇编来完成:
#define LABEL_SYMBOL(name) asm volatile("labelsym_" name "_%=: .global labelsym_" name "_%=":);
然后在你的代码中:
LABEL_SYMBOL("xxx")
附加_%到符号确保它在编译单元中是唯一的(https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#Special-format-strings)。
然后您可以找到所有检查 ELF 程序头的符号,如下所述:List all the function/symbols on the Fly in C code on a Linux Architecture?
| 归档时间: |
|
| 查看次数: |
5439 次 |
| 最近记录: |