在C中,假设var1是foo1()中的变量,foo2()想要访问var1,但是foo1()并没有调用foo2(),所以我们不能通过参数传递它。同时,只有 foo1() 和 foo2() 会访问它,所以我不想将其声明为全局变量。这与c++中的“友元语义”类似,有没有办法在C中实现这一点?
void foo1() {
...
var1;
....
}
void foo2() {
...
how to access var1?
...
}
Run Code Online (Sandbox Code Playgroud)
您将变量传递给两个函数......一般来说,函数不应该保存状态。
很快你就会发现传递变量不太好并且变得脆弱,所以相反,你传递结构......然后函数开始处理结构的状态。
typedef struct
{
int var1;
} blah_t;
void foo1(blah_t* b)
{
b->var1=0;
}
void foo2(blah_t* b)
{
b->var1++;
}
Run Code Online (Sandbox Code Playgroud)
这是 OO C 背后非常简单的种子想法。