如果我有两个这样的 C 结构:
struct buffer_t {
void *buffer;
int length;
};
struct type_t {
int a;
struct buffer_t buf;
double c;
} obj;
我想导出obj
的第二个字段,buf
以便 a 可以从另一个文件中引用它,例如extern struct buffer_t buffer
(或其他),有什么方法可以实现吗?我需要导出obj.buf
结构,而不是指向它的指针。
编辑
我需要专门导出obj.buf
,而不是整个obj
结构。
EDIT2
我想我最好用汇编代码来解释我需要什么。编译器应该为obj
的声明生成以下汇编代码:
.data
.align 8
.obj:
.long 0 # obj.a
.zero 8 # obj.buf.buffer
.zero 4 # obj.buf.length
.quad 0 # double 2
.size obj, 32
但我想强迫它产生类似的东西:
.globl obj_buf
.data
.align 8
.obj:
.long 0 # obj.a
obj_buf:
.zero 8 # obj.buf.buffer
.zero 4 # obj.buf.length
.quad 0 # double 2
.size obj, 32
所以这obj.buf
是由一个符号标识的。那么,有没有办法让 C 编译器(GCC 或 Clang)分配obj.buf
一个符号?