在一个文件中,我有一个结构,例如...
struct t {
int private;
int public;
};
struct t s;
让其他对象文件能够访问的一种方法s.public是放置...
struct t {
int private;
int public;
};
extern struct t s;
...进入头文件,并让其他文件引用s.public.
我想避免这种情况,因为它锁定了s引public用s.public. 这意味着public如果我在需要重新编译private2之后添加了新文件,这些文件的地址就会错误。private
s.public相反,我想找到一种方法来s_public_direct直接导出符号的位置,而不是像s偏移到 `public. 所以其他文件只需要标题......
extern int s_public_direct;
...并且不知道public碰巧居住的结构的布局(甚至存在)。
有没有办法为 C/C++ 结构中的变量导出符号引用?如果没有,有没有一种优雅的方法来解决这个问题?
请注意,这不是范围问题,因此private使用 C++进行标记private:不会改变引用对象文件仍将传递封闭结构的基地址,然后将偏移量添加到public. 我真的在寻找某种 C/C++ 语法,它告诉编译器导出结构内部变量的符号。或者可能是一种声明新的可导出符号的方法,例如int s_public_direct作为结构内变量的别名。