struct _s1
{
uint32_t var1;
struct _s2
{
uint32_t var2;
uint32_t var3;
} s2;
}
struct _s1 s1;
可能有一个指向结构s1和f.e的指针。使用嵌入结构s2和主要是s1中的变量:
void funcS(_s1 *sTest)
{
sTest->var1 = 1;
sTest->s2.var2 = 4;
}
问题:“ funcS”参数中的指针可能仅引用“ s2”结构,而无法使用var1f.e。 (以及s1中的其他类型)?
void funkcS(_s1->s2 *s2Test)
答案 0 :(得分:3)
您可以使用范围操作符::
来访问嵌套范围,如_s1::_s2
:
void func2(_s1::_s2* ptr) { ... }
答案 1 :(得分:0)
您可以使用指针或引用。我还建议您在s1之外定义结构s2。
#define uint32_t int
struct s2{
uint32_t var2;
uint32_t var3;
};
struct s1{
uint32_t var1;
s2 _s2;
};
void funcS(s1 *sTest)
{
sTest->var1 = 1;
sTest->_s2.var2 = 4;
}
void funcSs2(s2 *sTest)
{
sTest->var2 = 4;
}
void funcSs2ref(s2& sTest)
{
sTest.var2 = 4;
}
int main(int argc, char const *argv[]) {
s1 obj;
funcSs2(&obj._s2);
funcSs2ref(obj._s2);
return 0;
}