我在 test.h 文件中声明
extern void test(int *ptr);
extern void myFunc();
extern int num;
然后我将h文件包含在我的 test1.c 文件中。
我在 test2.c 中编写了我的函数:
void myFunc( )
{
test(&num);
}
void test(int *num )
{
*num = 9;
}
test1.c 中的我写道:
int num = 5;
myFunc();
我的问题是,我如何使用num
中的test()
变量/指针而不将其传递给myFunc()
?
文件结构必须保持不变,这就是为什么我要尝试刷新我的C,
比你
答案 0 :(得分:2)
检查范围。
void myFunc( )
{
test(&num);
}
除非num是全局的,否则此函数无法看到变量num,因此它是GIGO(垃圾输入,垃圾输出)。
我知道你看起来像num IS global,但这就是诀窍:
int num = 5;
myFunc();
我看不到完整的代码,但由于你的格式化,我猜这是使用num的本地副本而不是extern,因为你在声明一个 new 变量您调用myFunc()的函数内的局部范围。外部没有被使用。
答案 1 :(得分:1)
如果int num是全局的,那么任何函数都可以使用它。第二种情况,如果你将int num声明为local,那么我认为这是一个错误,或者你不能访问其中num已经作为本地存在的函数中的全局num或写下你的完整代码。