这里的软件经验很少的新 EE。在过去的几年里,在这个网站上阅读了很多问题,这将是我的第一个问题/帖子。还没有完全找到这个问题的答案。
我想知道让函数修改主体内的全局变量(不将其作为参数传递)与传递变量地址之间的区别/动机。
这是每个示例以使其更清楚。假设我声明了一些函数“peripheral.c”(在“peripheral.h”中使用它们的正确原型,并在“implementation.c”中使用它们
方法一:
//peripheral.c
//macros, includes, etc
void function(*x){
//modify x
}
.
//implementation.c
#include "peripheral.h"
static uint8 var;
function(&var); //this will end up modifying var
方法二:
//peripheral.c
//macros, includes, etc
void function(void){
//modify x
}
.
//implementation.c
#include "peripheral.h"
static uint8 x;
function(); //this will modify x
避免使用“全局”变量的唯一动机是什么?(另外,如果它只有文件范围,它真的是全球性的吗?)
希望这个问题是有道理的。谢谢